如何在不重新遍历父循环的情况下同时迭代两个数组?

Rog*_*ers 8 php

如何在具有相同大小的同时迭代两个数组?

例如,第一个数组$a = array( 1,2,3,4,5); 第二个数组$b = array(1,2,3,4,5);

我希望通过迭代两者的结果是让循环过程通过相同的值来产生类似的结果

  1-1
  2-2
  3-3
  4-4
  5-5
Run Code Online (Sandbox Code Playgroud)

我尝试在下面这样做,但它不起作用,它继续通过第一个循环再次

foreach($a as $content) {
    foreach($b as $contentb){
        echo $a."-".$b."<br />"; 
    }
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*los 13

使用普通for循环代替a foreach,以便获得显式循环计数器:

for($i=0; $i<count($content)-1; $i++) {
  echo $content[$i].'-'.$contentb[$i];
}
Run Code Online (Sandbox Code Playgroud)

如果要使用基于字符串的索引数组,并且知道数组之间的字符串索引相等,则可以坚持使用该foreach构造

foreach($content as $key=>$item) {
  echo $item.'-'.$contentb[$key];
}
Run Code Online (Sandbox Code Playgroud)

  • 应该是 for($i=0; $i&lt;count($content); $i++) 或 for($i=0; $i&lt;=count($content)-1; $i++) (3认同)

Mar*_*ker 13

不是最有效的,而是SPL的multipleIterator的演示

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($a));
$mi->attachIterator(new ArrayIterator($b));

$newArray = array();
foreach ( $mi as $value ) {
    list($value1, $value2) = $value;
    echo $value1 , '-' , $value2 , PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)