如何将两个foreach循环合二为一

Kir*_*irk 8 php foreach

语言是PHP.我有一个foreach($ a为$ b)和另一个foreach($ c为$ d => $ e).我如何将它们组合成一个整体.我厌倦了foreach(($ a as $ b)&&($ c as $ d => $ e)),但那是垃圾.

Vol*_*erK 22

您可能对SPL的MultipleIterator感兴趣

例如

// ArrayIterator is just an example, could be any Iterator.
$a1 = new ArrayIterator(array(1, 2, 3, 4, 5, 6));
$a2 = new ArrayIterator(array(11, 12, 13, 14, 15, 16));

$it = new MultipleIterator;
$it->attachIterator($a1);
$it->attachIterator($a2);

foreach($it as $e) {
  echo $e[0], ' | ', $e[1], "\n";
}
Run Code Online (Sandbox Code Playgroud)

版画

1 | 11
2 | 12
3 | 13
4 | 14
5 | 15
6 | 16
Run Code Online (Sandbox Code Playgroud)

  • 这取决于您是否设置MultipleIterator :: MIT_NEED_ANY或MultipleIterator :: MIT_NEED_ALL标志.使用MIT_NEED_ALL,如果任何内部迭代器没有更多元素,则迭代器将停止.使用MIT_NEED_ANY只要至少一个内部迭代器具有另一个元素,迭代器就会继续,所有其他项都变为NULL.MIT_NEED_ALL是默认值. (3认同)

T.T*_*dua 9

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/>";
}
?>
Run Code Online (Sandbox Code Playgroud)

或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/>";
}
?>
Run Code Online (Sandbox Code Playgroud)


zom*_*bat 0

我想这会做你想做的事。它将在整个循环中同时平等地推进两个数组。如果的大小与数组大小不同并且您需要根据数组大小打破逻辑,您始终可以break手动进行:$c$a

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

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