2017-05-11 6 views
1

Mit PHP und MySQL habe ich zwei Arrays generiert. Ich möchte diese Arrays durchlaufen, Daten von beiden abrufen und zusammen in einem Satz anzeigen.PHP foreach Schleifen und Datenabruf

foreach ($items as $item) { 
    if(isset($item->item_title)) { 
     $itemTitle = $item->item_title; 
    } 
    // var_dump($itemTitle); 
    // string(7) "Halfway" string(5) "Story" string(6) "Listen" 
} 

foreach ($aData["Items"]["Item"] as $a) { 
    if (isset($a['description'])) { 
     $aDescription = $a['description']; 
    } 
    // var_dump($aDescription ); 
    // string(4) "Good" string(6) "Strong" string(2) "OK" 
} 

?> 

Gewünschtes Ergebnis;

The title is Halfway and the description is Good. 
The title is Story and the description is Strong. 
The title is Listen and the description is OK. 
// etc 
// etc 

Ist es möglich, zu nisten die foreach Schleifen, oder gibt es eine bessere effizientere Art und Weise?

+0

Bitte teilen Sie Ihre Eingabe-Array. –

+0

Leider habe ich diese Daten nicht. Wenn es bestimmte Methoden oder Funktionen gibt, die Sie empfehlen können, bin ich bereit, sie mir selbst anzusehen. Ich brauche nur einen Schubs in die richtige Richtung! Die Logik wirft mich ab:/ –

+0

Ich hoffe, dass mein Beitrag Ihnen mit dem gleichen helfen wird, wie Sie erwarten. –

Antwort

0

Bitte versuchen Sie es auf diese Weise. Ich hoffe das hilft!!

foreach ($items as $index => $item) { 
    if(isset($item->item_title)) { 
     $itemTitle = $item->item_title; 
     echo 'The title is '.$itemTitle; 
    } 
    if(isset($aData["Items"]["Item"][$index]['description']) { 
     $itemDescription = $aData["Items"]["Item"][$index]['description']; 
     echo ' and the description is '.$itemDescription; 
    } 
    echo '<br>'; 
    // The title is Halfway and the description is Good. 
} 
0

Versuchen Sie diese Hoffnung, die Ihnen helfen wird.

Hinweis: Hier nehme ich an, beide Arrays haben gleiche Indizes.

$items
$aData["Items"]["Item"].

Wenn nicht, können Sie tun array_values($items) und array_values($aData["Items"]["Item"])

foreach ($items as $key => $item) 
{ 
    if (isset($item->item_title) && isset($aData["Items"]["Item"][$key]['description'])) 
    { 
     $itemTitle = $item->item_title; 
     echo sprinf("The title is %s and the description is %s",$itemTitle,$aData["Items"]["Item"][$key]['description']); 
     echo PHP_EOL; 
    } 
} 
0

Sie können diese beiden foreach Schleifen unter Verwendung einer einfachen for Schleife zusammenführen, wie folgt aus:

$count = count($items) >= count($aData["Items"]["Item"]) ? count($aData["Items"]["Item"]) : count($items); 

for($i = 0; $i < $count; ++$i){ 
    if(isset($item[$i]->item_title)) { 
     $itemTitle = $item[$i]->item_title; 
    } 
    if (isset($aData["Items"]["Item"][$i]['description'])) { 
     $aDescription = $aData["Items"]["Item"][$i]['description']; 
    } 
    // your code 
} 

Randnotiz: Der obige Code geht davon aus, dass zwei Arrays $items und $aData["Items"]["Item"] ungleiche Anzahl von Elementen haben, obwohl dies auch für die gleiche Anzahl von Elementen funktionieren wird. Wenn Sie sicher sind, dass diese beiden Arrays immer die gleiche Anzahl von Elementen haben, dann Refactoring die $count = ... ; Anweisung in der folgenden Art und Weise,

$count = count($items); 

oder

$count = count($aData["Items"]["Item"]); 

und verwenden diese $count Variable in for Schleife .