Как объединить две петли foreach в один

Язык – это PHP. У меня есть один foreach ($ a как $ b) и другой foreach ($ c как $ d => $ e). Как объединить их, чтобы читать как один. Я устал foreach (($ a как $ b) && ($ c как $ d => $ e)), но это мусор.

Вы можете быть заинтересованы в MultipleIterator SPL

например

// 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) Первый метод

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

Я не понимаю, что вы пытаетесь сделать. Если вы хотите достичь их один за другим, просто используйте две петли:

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

но я бы не стал им советовать.

Это будет делать то, что вы хотите, я думаю. Он будет одновременно поддерживать оба массива в течение всего цикла. Вы всегда можете break вручную, если $c отличается от $a и вам нужно ломать логику на основе размера массива:

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

each() будет продвигать указатель массива $c на каждой итерации.