是否可以在PHP中使用多个“索引”变量进行foreach
循环,类似于以下(不使用正确的语法)?
foreach ($courses as $course, $sections as $section)
如果没有,是否有一种很好的方法可以达到相同的效果?
答案 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){
}