Множественные индексные переменные в PHP foreach loop

Возможно ли иметь цикл foreach в PHP с несколькими «индексными» переменными, похожий на следующий (который не использует правильный синтаксис)?

 foreach ($courses as $course, $sections as $section) 

Если нет, есть ли хороший способ добиться такого же результата?

для достижения именно того результата, который вы могли бы сделать

 foreach (array_combine($courses, $sections) as $course => $section) 

но это работает только для двух массивов

Если оба массива имеют одинаковый размер, вы можете использовать цикл for как:

 for($i=0, $count = count($courses);$i<$count;$i++) { $course = $courses[$i]; $section = $sections[$i]; } 

Вам нужно будет использовать вложенные петли следующим образом:

 foreach($courses as $course) { foreach($sections as $section) { } } 

Конечно, это будет охватывать каждый раздел для каждого курса.

Если вы хотите посмотреть на каждую пару, вам лучше использовать объекты, которые содержат пары курса / раздела, и перебирать их, или убедиться, что индексы одинаковы и делают:

 foreach($courses as $key => $course) { $section = $sections[$key]; } 

ПЫТАТЬСЯ –

1)

 <?php $FirstArray = array('a', 'b', 'c', 'd'); $SecondArray = array('1', '2', '3', '4'); foreach($FirstArray as $index => $value) { echo $FirstArray[$index].$SecondArray[$index]; 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/>"; } ?> 

Нет, потому что у этих массивов может быть другое количество предметов.

Вы должны явно написать что-то вроде этого:

 for ($i = 0; $i < count($courses) && $i < count($sections); ++$i) { $course = $courses[$i]; $section = $sections[$i]; //here the code you wanted before } 

Нет, это, пожалуй, один из редких случаев, когда полезно использовать курсоры массива PHP:

 reset($sections); foreach ($courses as $course) { list($section) = each($sections); } 

Что это было бы? Являются ли $courses и $sections только двумя отдельными массивами, и вы хотите выполнять одну и ту же функцию для значений в каждой? Вы всегда можете:

 foreach(array_merge($courses, $sections) as $thing) { ... } 

Это, конечно, делает все обычные предположения о array_merge .

Или это то, что $sections исходит из $course и вы хотите что-то сделать для каждого раздела в каждом курсе?

 foreach($courses as $course) { foreach($sections as $section) { // Here ya go } } 

как это?

 foreach($array as $b=>$c){ }