Php 如何将两个foreach循环组合成一个

Php 如何将两个foreach循环组合成一个,php,foreach,Php,Foreach,语言是PHP。我有一个foreach($a为$b)和另一个foreach($c为$d=>$e)。我如何将它们结合在一起阅读。我累了($a作为$b)和($c作为$d=>$e)),但那是垃圾 我想这会满足你的要求。它将在整个循环中同时均匀地推进两个阵列。如果$c的大小与$a不同,并且需要基于数组大小的中断逻辑,则始终可以手动中断: foreach($a as $b) { list($d,$e) = each($c); //continue on with $b, $d and $e

语言是PHP。我有一个foreach($a为$b)和另一个foreach($c为$d=>$e)。我如何将它们结合在一起阅读。我累了($a作为$b)和($c作为$d=>$e)),但那是垃圾

我想这会满足你的要求。它将在整个循环中同时均匀地推进两个阵列。如果
$c
的大小与
$a
不同,并且需要基于数组大小的中断逻辑,则始终可以手动
中断

foreach($a as $b)
{
    list($d,$e) = each($c);
    //continue on with $b, $d and $e all set
}

each()
将在每次迭代中推进
$c
的数组指针

我不明白你想干什么。如果您想一个接一个地到达它们,只需使用两个循环:

foreach ($a as $b) { ... }
foreach ($c as $d => $e) { ... }
如果需要
$a
$c
的所有组合:

foreach ($a as $b) {
  foreach ($c as $d => $e) {
    // do stuff
  }
}
我想你可以这样做:

foreach (array_merge($a, $c) as $k => $v) {
  ...
}

但我不一定建议你这么做。

你可能会感兴趣

e、 g

印刷品

1 | 11
2 | 12
3 | 13
4 | 14
5 | 15
6 | 16
1) 第一种方法

<?php
$FirstArray = array('a', 'b', 'c', 'd');
$SecondArray = array('1', '2', '3', '4');

foreach(array_combine($FirstArray, $SecondArray) as $f => $n) {
    echo $f.$n;
    echo "<br/>";
}
?>

或2)第二种方法

<?php
$FirstArray = array('a', 'b', 'c', 'd');
$SecondArray = array('1', '2', '3', '4');

for ($index = 0 ; $index < count($FirstArray); $index ++) {
  echo $FirstArray[$index] . $SecondArray[$index];
  echo "<br/>";
}
?>


这是我今天看到的最有趣的代码和平。再加一个。数组的长度是否必须相等,或者是否在某个点停止对其中一个数组的迭代?这取决于是否设置了MultipleIterator::MIT_NEED_ANY或MultipleIterator::MIT_NEED_ALL标志。使用MIT_NEED_,如果任何内部迭代器没有更多元素,则所有迭代器都将停止。使用MIT_NEED_ANY,只要至少一个内部迭代器有另一个元素,迭代器就会继续,所有其他项都将变为NULL。MIT_NEED_ALL是默认设置。感谢您介绍此SPL功能!还有一个!刚刚遇到这个-看起来这是针对PHP5.3.0+的。我运行的是5.2.17,是否有其他版本的PHP?
<?php
$FirstArray = array('a', 'b', 'c', 'd');
$SecondArray = array('1', '2', '3', '4');

for ($index = 0 ; $index < count($FirstArray); $index ++) {
  echo $FirstArray[$index] . $SecondArray[$index];
  echo "<br/>";
}
?>