2016-03-31 111 views
0

如何將兩個數組組合爲foreach循環。PHP組合Foreach循環陣列

我有兩個數組可以導致foreach循環。

非常感謝您的幫助。

Primary Array: 

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [name] => Grape 
      [date_created] => 2016-03-30 14:19:12 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [name] => Coconut 
      [date_created] => 2016-03-30 14:22:54 
     ) 

-

Secondary Array: 

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [fruit_id] => 1 
      [item_id] => 1 
      [ppk] => 0 
      [ppo] => 2342420 
      [image] => 6450983014191211.jpg 
      [url] => 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [fruit_id] => 1 
      [item_id] => 10 
      [ppk] => 343353 
      [ppo] => 0 
      [image] => 64509830141912110.jpg 
      [url] => http://yahoo.com 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [fruit_id] => 2 
      [item_id] => 1 
      [date_created] => 2016-03-30 14:22:54 
      [date_last_change] => 2016-03-30 14:14:48 
      [ppk] => 0 
      [ppo] => 2323120 
      [image] => 6450983014225421.jpg 
      [url] => 
     ) 

    [3] => Array 
     (
      [id] => 4 
      [fruit_id] => 2 
      [item_id] => 11 
      [date_created] => 2016-03-30 14:22:54 
      [date_last_change] => 2016-03-30 14:14:48 
      [ppk] => 232342000 
      [ppo] => 0 
      [image] => 64509830142254211.jpg 
      [url] => http://msn.com 
     ) 

    [4] => Array 
     (
      [id] => 5 
      [fruit_id] => 2 
      [item_id] => 12 
      [date_created] => 2016-03-30 14:22:54 
      [date_last_change] => 2016-03-30 14:14:48 
      [ppk] => 34343400 
      [ppo] => 0 
      [image] => 64509830142254212.jpg 
      [url] => http://fussball.com 
     ) 

注:

場 「fruit_id」 是從主陣列

而結果 「ID」 的現場拍攝:

//When I'm doing foreach loop, it should must result like this: 

ID: 1 
Fruit Name: Grape 
Item ID: 1|10 
PPK: 0|343353 
PPO: 2342420|0 
Image: 6450983014191211.jpg|64509830141912110.jpg 
URL: ""|http://yahoo.com 

------------------------------------------------------------------------ 

ID: 2 
Fruit Name: Coconut 
Item ID: 1|11|12 
PPK: 0|232342000|232342000 
PPO: 2323120|0|0 
Image: 6450983014225421.jpg|64509830142254211.jpg|64509830142254212.jpg 
URL: ""|http://msn.com|http://fussball.com 

請幫忙。

謝謝您的高級。

+0

相似:http://stackoverflow.com/q/32061254/3933332所以你只是想一次循環兩個數組,所以你可以使用這兩個數組的數據爲您的輸出? – Rizier123

+0

@ Rizier123是的我需要循環兩個數組產生foreach哪個輔助數組有ID從主數組 – cocksparrer

+0

因此,兩個數組之間的關係是ID元素?不是每個子陣列的位置。如果是的話,你可以有多個具有相同ID的子數組? – Rizier123

回答

2

因此,您需要使用幾種不同的方法來獲得預期的輸出。

要從第二個陣列獲取第一個陣列的每個ID的所有相關陣列,可以使用array_filter()來過濾出這些子陣列。

然後,當打印出相關數組的數據時,可以使用array_column()來獲取要從每個子數組顯示的特定數據,並將其轉換爲字符串。

現在,如果您希望將所有空值顯示爲"",您可以快速循環顯示要用array_map()打印的數據,然後將其替換。

而對於分隔符,你可以檢查它是否是最後一個元素,如果不打印出分隔符。

$last = count($firstArray) - 1; 
foreach($firstArray as $k => $v){ 

    $related = array_filter($secondArray, function($value)use($v){ 
     return $value["fruit_id"] == $v["id"]; 
    }); 

    echo "ID: " . $v["id"] . PHP_EOL; 
    echo "Fruit Name: " . $v["name"] . PHP_EOL; 
    echo "Item ID: " . implode("|", array_column($related, "item_id")) . PHP_EOL; 
    echo "PPK: " . implode("|", array_column($related, "ppk")) . PHP_EOL; 
    echo "PPO: " . implode("|", array_column($related, "ppo")) . PHP_EOL; 
    echo "Image: " . implode("|", array_column($related, "image")) . PHP_EOL; 
    echo "Url: " . implode("|", array_map(function($v){return $v == "" ? '""' : $v;}, array_column($related, "url"))) . PHP_EOL; 


    if($k != $last) 
     echo PHP_EOL . "------------------------------------------------------------------------" . PHP_EOL . PHP_EOL; 

} 
+0

我沒有看到結果:) – cocksparrer

+0

@cocksparrer這應該只顯示如何使用第二個數組中的fruid_id從第一個數組中獲取名稱。如果你的問題是如何以這種格式打印輸出,那麼我可以更新我的答案。 – Rizier123

+0

是的,你可以給我一個例子輸出打印?謝謝。 – cocksparrer