2017-05-11 12 views
1

PHPとMySQLの使用私は2つの配列を生成しました。これらの配列をループして、両方からデータを取得し、1つの文で一緒に表示したいと思います。PHP foreachループとデータ検索

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" 
} 

?> 

希望の結果;

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 

foreachループを入れ子にすることが可能であり、またはより良い、より効率的な方法はありますか?

+0

入力配列を共有してください。 –

+0

残念ながら私はそのデータを持っていません。特定の方法や機能がある場合は、自分で見てもらうことをお勧めします。私はちょうど正しい方向に振る舞いが必要です!論理は私を捨てている:/ –

+0

私のポストがあなたが期待しているのと同じようにあなたを助けてくれることを願っています。 –

答えて

0

この方法を試してください。この助けを願って!

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

これがあなたを助けてくれますか?

注:ここでは、両方のアレイに同じインデックスがあると仮定しています。

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

あなたはarray_values($items)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

を行うことができない場合は、これら2つのforeachのループのように、簡単なforループを使用してマージすることができます。

$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 
} 

をSidenote:上記のコードでは、2つの配列$items$aData["Items"]["Item"]の要素数が同じではないと仮定していますが、これは同じ数の要素に対しても機能します。あなたはこれら二つの配列は常に要素の数と同じ数を持っていることを確信している場合は、

$count = count($items); 

または

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

forループでこの$count変数を使用し、次のように$count = ... ;文をリファクタリング。