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 =&gt; $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循环中的多个索引变量的主要内容,如果未能解决你的问题,请参考以下文章

PHP基础总结——数组

如何在php中访问foreach循环之外的多个变量

这个一个对ES6多个异步处理的并发继发思想的总结和理解

C#中foreach语句的作用?

foreach的用法(转)

php foreach循环中的变量