2016-03-31 113 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