PHP foreach循环中的多个索引变量

时间:2010-11-11 18:15:35

标签: php loops foreach for-loop

是否可以在PHP中使用多个“索引”变量进行foreach循环,类似于以下(不使用正确的语法)?

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

如果没有,是否有一种很好的方法可以达到相同的效果?

8 个答案:

答案 0 :(得分:48)

实现你可以做到的结果

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

但这只适用于两个数组

答案 1 :(得分:14)

如果两个数组的大小相同,则可以使用for循环:

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

答案 2 :(得分:6)

你需要使用这样的嵌套循环:

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

当然,这将循环每个课程的每个部分。

如果你想看看每一对,你最好使用包含课程/部分对的对象并循环遍历这些对象,或者确保索引是相同的并且正在做:

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

答案 3 :(得分:5)

尝试 -

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

答案 4 :(得分:2)

不,因为这些数组可能有其他数量的项目。

你必须明确地写出类似的东西:

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

    //here the code you wanted before
}

答案 5 :(得分:2)

不,这可能是PHP的数组游标很有用的少数情况之一:

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

答案 6 :(得分:1)

到底会怎么做? $courses$sections只是两个独立的数组,并且您希望为每个数组中的值执行相同的功能吗?你可以随时做:

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

当然,这会产生关于array_merge的所有常规假设。

或者$sections来自$course并且您想为每个课程中的每个部分做些什么吗?

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

答案 7 :(得分:0)

像这样?

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

}