Ответ 1
чтобы достичь именно того результата, который вы могли бы сделать
foreach (array_combine($courses, $sections) as $course => $section)
но это работает только для двух массивов
Возможно ли иметь цикл 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];
}
TRY -
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){
}