Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果一个foreach在另一个foreach中,两个foreach函数如何工作_Php_Foreach - Fatal编程技术网

Php 如果一个foreach在另一个foreach中,两个foreach函数如何工作

Php 如果一个foreach在另一个foreach中,两个foreach函数如何工作,php,foreach,Php,Foreach,如果两个foreach函数中的一个在另一个内部,我无法理解它们如何协同工作的逻辑,例如: foreach ($projects as $project){ foreach ($users as $user){ } } 当第一个foreach获得一个项目时,所有用户中的foreach将遍历所有用户,直到没有项目,然后返回并重复?或者当它也找到第一个用户时 这似乎是一个非常基本的问题,但我无法在其他地方找到它。您可以自己尝试,它非常简单。只需编写两个伪数组并使用两个循环对其进行迭

如果两个foreach函数中的一个在另一个内部,我无法理解它们如何协同工作的逻辑,例如:

foreach ($projects as $project){
    foreach ($users as $user){

    }
}
当第一个foreach获得一个项目时,所有用户中的foreach将遍历所有用户,直到没有项目,然后返回并重复?或者当它也找到第一个用户时


这似乎是一个非常基本的问题,但我无法在其他地方找到它。

您可以自己尝试,它非常简单。只需编写两个伪数组并使用两个循环对其进行迭代。下面是一个例子

  • 它会找到一个项目
  • 将为找到的每个用户对象执行内部foreach用户循环
  • 它将找到下一个项目
  • 它将再次为项目运行内部foreach循环
  • 我想说的是:

    <?php
    
    $array1 = array(
        "element1" => "value1",
        "element2" => "value2",
        "element3" => "value3"
    );
    
    $array2 = array(
        "element1.1" => "value1.1",
        "element2.1" => "value2.1",
        "element3.1" => "value3.1"
    );
    
    foreach($array1 as $arr1) {
        print_r($arr1);
        echo "<br>";
    
        foreach($array2 as $arr2) {
            print_r($arr2);
            echo "<br>";
        }
    }
    

    如果您不理解,请使用
    echo
    添加调试,看看会发生什么。想想二维矩阵(普通网格)。在PHP 5中,当foreach首次开始执行时,内部数组指针会自动重置为数组的第一个元素。[…]在PHP7中,foreach不使用内部数组指针。外部foreach循环的每次迭代都执行内部foreach循环,而内部foreach循环的每次迭代都执行内部foreach循环体(在您的示例中,内部循环体是空的)。我如何打破它?在本例中有3个值,但如果有5000个值呢?如果我在第二节找到了我想要的结果,我不想让它全部通过。是否存在某种中断函数/代码或
    返回值
    停止它?您可以使用
    中断。。。但老实说,我不太确定这是否适合你。你能解释一下你想做什么吗?您是否正在尝试对两个以上的SQL查询结果进行评分?我正在使用laravel,并且我正在尝试为每个为每个具体项目工作的用户查找用户工资。我已经建立了关系和一切,但只是不知道两个或更多的foreach如何在彼此内部工作。但是非常感谢!如果数据存储在数据库中,并且您有一些外键关系,那么您应该真正了解有关
    SQL Join
    -它允许您将两个表连接在一起,因此您只有一个结果集。这只会导致一个foreach循环,它将减少网站的加载时间。
    value1
    value1.1
    value2.1
    value3.1
    value2
    value1.1
    value2.1
    value3.1
    value3
    value1.1
    value2.1
    value3.1