Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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循环的数组?_Php_Arrays_Foreach_Reference - Fatal编程技术网

Php 如何更改直接影响foreach循环的数组?

Php 如何更改直接影响foreach循环的数组?,php,arrays,foreach,reference,Php,Arrays,Foreach,Reference,我使用foreach循环遍历我拥有的数组。但是在foreach循环中,我需要修改数组,以便它直接影响我的foreach循环 因此,我将举例说明我的问题: <?php $array = ["Red", "Yellow", "Blue", "Orange"]; foreach($array as $color) { if(($key = array_search("Blue", $array)) !== false) unset($

我使用foreach循环遍历我拥有的数组。但是在foreach循环中,我需要修改数组,以便它直接影响我的foreach循环

因此,我将举例说明我的问题:

<?php

    $array = ["Red", "Yellow", "Blue", "Orange"];

    foreach($array as $color) {
        if(($key = array_search("Blue", $array)) !== false) 
            unset($array[$key]);

        echo $color . "<br>";

    }

?>

您可以通过引用另一个变量来分配数组,因此
is_ref
is 1意味着foreach循环不再在数组的副本上循环

因此,只需将其放在foreach循环之前:

$arr = &$array;
有关foreach实际工作原理的更多信息,请参阅:

还要注意,因为PHP7中有一些更改:这在PHP7中不再起作用

如果您想在PHP7中执行相同的操作,在PHP7中改变行为,只需说您想通过引用循环数组,例如

foreach($array as &$color)

你到底想达到什么目的?通过引用传递应该在这里起作用。“从$array中删除'Blue'后,我需要相同的foreach循环,以便在下一次增量时使用修改后的$array。”在下一个增量/迭代中,您具体将做什么?那么这个问题我们的答案是什么?我已经更新了问题,使其更清楚,请再次查看。谢谢您的回答我尝试按照您的建议做,但我不是为我工作。我已经更新了问题以使其更清楚。请阅读我的编辑。@user4676307如果您需要对内部数组执行此操作,请通过引用变量来指定另一个数组。谢谢您的帮助,我可以看到它正在工作。你能告诉我我到底需要做什么吗?因为这让我很困惑,而且我以前从未使用过is_ref。所以我有一个主数组“exported_sku”。然后我需要创建另一个数组$a=$exported_SKU和$b=&a。是这样吗please@user4676307如果您不想循环复制:
$exported\u sku
,只需执行:
$xy=&$exported\u sku在foreach之前。如果您想为:
$related_产品
执行此操作,则只需使用另一个变量名,但也要在第一个foreach之前执行相同的操作。(您只需要一个ref)我添加了$arr=&$exported_SKU;就在我第一次出发之前。现在,当删除元素时,我要从$arr或$export_SKU中删除。我试图从$exported_SKU中删除,但没有成功。
$arr = &$array;
foreach($array as &$color)