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

时间:2010-03-31 22:43:07

标签: php foreach

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

4 个答案:

答案 0 :(得分:22)

您可能对SPL's MultipleIterator

感兴趣

e.g。

// 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";
}

打印

1 | 11
2 | 12
3 | 13
4 | 14
5 | 15
6 | 16

答案 1 :(得分: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/>";
}
?>

或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/>";
}
?>

答案 2 :(得分:3)

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

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) {
  ...
}

但我不一定会建议。

答案 3 :(得分:0)

这将按照我的想法做到。它将在整个循环中同时推进两个阵列。如果break的大小与$c不同,您可以手动$a,并且您需要根据数组大小打破逻辑:

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

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