【问题标题】:loop through two muti-dimensional array at same time using foreach loop使用 foreach 循环同时遍历两个多维数组
【发布时间】:2014-01-14 07:56:50
【问题描述】:

我正在尝试使用 foreach 循环遍历两个多维数组

[array1] => Array ( 
[0] => Array ( 1,2,3 ) 
[1] => Array ( 4,5,6 ) 
[2] => Array ( 7,8,9 )
  )
[array2] => Array ( 
[0] => Array ( 1,2,3 ) 
[1] => Array ( 4,5,6 ) 
[2] => Array ( 7,8,9 ) ) 
  )

两者都有相同的键,

我想同时访问两个数组的第一个数组, 我想做这样的事情

foreach($array1 as $key1=>$value1 && $array2 as $key2=>$value2)
    echo $value1[1]."  ".$value2[2]

它不正确,但这就是我想要做的!

【问题讨论】:

  • 两个数组索引是否相同???
  • 是的,第一级的键在两个数组中是相同的

标签: php foreach


【解决方案1】:

如果两个数组在两个维度上的键相同:

foreach (array_keys($array1) as $key1) {
    foreach (array_keys($array1[$key1]) as $key2) {
        echo $array1[$key1][$key2].' '.$array2[$key1][$key2];
    }
}

最坏的情况是,一个或两个数组中缺少一个或另一个维度中的某些键,您必须在读取之前合并它们(并确保每个循环和数组中存在键的值)。


更新:对二维数组结构使用了两次相同的解决方案。

【讨论】:

  • 但我想提取数组值
  • 查看我的更新,您只需将相同的逻辑应用于第二维和第一维。
【解决方案2】:

我不确定你是否可以这样做,我会使用 for 循环:

for(i=0; i < count($array1); i++)
{
   for(j=0; j < count($array1[i]); j++)
   {
       echo $array1[i][j];
       echo $array2[i][j];
   }
}

【讨论】:

  • 谢谢,我认为我们不能以这种方式循环关联数组,所以我从未尝试过。但现在我的困惑解决了。
【解决方案3】:

你可以使用这个代码,因为你有相同的键

foreach($array1 as $key=>$value) {
    for($i=0; $i < count($value); $i++) {
        echo $value[$i]."  ".$array2[$key][$i];
    }
}

感谢 Maks3w 的评论。

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 2010-10-24
    • 1970-01-01
    • 2020-01-14
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多