PHP foreach循环中的多个索引变量
Posted
技术标签:
【中文标题】PHP foreach循环中的多个索引变量【英文标题】:Multiple index variables in PHP foreach loop 【发布时间】:2011-05-08 15:40:39 【问题描述】:是否可以在 php 中使用带有多个“索引”变量的 foreach
循环,类似于以下(不使用正确的语法)?
foreach ($courses as $course, $sections as $section)
如果没有,有没有达到相同结果的好方法?
【问题讨论】:
您可能需要澄清一下。您是要循环遍历 2D 数组还是 2 个数组? 不确定这将如何工作?你能解释一下你在做什么吗?您可以在迭代之前有一个嵌套的 foreach 或组合数组。让我们知道您想要做什么,我们可以帮助您做到这一点。 【参考方案1】:为了达到你可以做到的结果
foreach (array_combine($courses, $sections) as $course => $section)
但这仅适用于两个数组
【讨论】:
注意;如果$courses
是数字字符串,它们将变成整数。
希望我不会复活一个太死的线程。但是,我试图实现同样的目标,我有过一秒钟,但我不认为它有效,但它没有,但我一生都记不起我输入的代码。我是试图让类别和价值进入数据库。 foreach($_POST['category'] as $i => $category) // 从 post 中获取值。 $category = mysql_real_escape_string($category); $value = mysql_real_escape_string($_POST['value'][$i]);
如果两个数组有不同的值怎么办【参考方案2】:
如果两个数组的大小相同,您可以使用 for
循环:
for($i=0, $count = count($courses);$i<$count;$i++)
$course = $courses[$i];
$section = $sections[$i];
【讨论】:
【参考方案3】:试一试-
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】:你需要像这样使用嵌套循环:
foreach($courses as $course)
foreach($sections as $section)
当然,这将遍历每门课程的每个部分。
如果您想查看每一对,最好使用包含课程/部分对的对象并循环这些对象,或者确保索引相同并执行以下操作:
foreach($courses as $key => $course)
$section = $sections[$key];
【讨论】:
我已经在 Wordpress 中成功使用了接受的答案和上面的$courses as $key => $course
答案。不同之处在于,接受的答案仅限于两个自定义字段,而此答案允许任意数量的字段,因此更加灵活。【参考方案5】:
不,因为这些数组可能有其他数量的项目。
你必须明确地写出这样的东西:
for ($i = 0; $i < count($courses) && $i < count($sections); ++$i)
$course = $courses[$i];
$section = $sections[$i];
//here the code you wanted before
【讨论】:
预执行你的 '$i 我处理非常大的项目,这些项目在高负载下工作,通常这并不重要,因为单个 SQL 查询比 php count 慢 1000 :)。如果你必须使用非常大的数组,那么应用程序设计就有问题。 在参数中使用 Count 会导致非常昂贵的事务。【参考方案6】:不,这可能是 PHP 的数组游标有用的少数情况之一:
reset($sections);
foreach ($courses as $course)
list($section) = each($sections);
【讨论】:
【参考方案7】:这到底能做什么? $courses
和 $sections
是否只是两个单独的数组,并且您想对每个数组中的值执行相同的功能?你总是可以这样做的:
foreach(array_merge($courses, $sections) as $thing) ...
当然,这对array_merge
做出了所有通常的假设。
还是$sections
来自$course
而你想为每门课程的每个部分做点什么?
foreach($courses as $course)
foreach($sections as $section)
// Here ya go
【讨论】:
【参考方案8】:喜欢这样吗?
foreach($array as $b=>$c)
【讨论】:
以上是关于PHP foreach循环中的多个索引变量的主要内容,如果未能解决你的问题,请参考以下文章