Php 如何更改直接影响foreach循环的数组?
我使用foreach循环遍历我拥有的数组。但是在foreach循环中,我需要修改数组,以便它直接影响我的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($
<?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)