Php 由于引用变量而导致意外的数据更改

Php 由于引用变量而导致意外的数据更改,php,Php,此代码导致意外的数组内容更改。原因可能是什么: <?php $arr[] = array('a', 'b'); $arr[] = array('c', 'd'); print_r($arr); foreach ($arr as &$processed_arr) { } foreach ($arr as $processed_arr) { } print_r($arr); 这确实可能是由于您之前的循环foreach退出迭代 即使在循环之后,作用域中仍然存在变量(我知道这

此代码导致意外的数组内容更改。原因可能是什么:

<?php

$arr[] = array('a', 'b');
$arr[] = array('c', 'd');

print_r($arr);
foreach ($arr as &$processed_arr) {

}

foreach ($arr as $processed_arr) {

}

print_r($arr);

这确实可能是由于您之前的循环foreach退出迭代 即使在循环之后,作用域中仍然存在变量(我知道这很糟糕)

所以代码如下:

$loop=[1,2,3];
foreach($loop as&$c){}
$c=4;
变量转储($loop);
将导致包含
[1,2,4]

代码的其余部分看起来不可能是导致这种情况的原因。当然
status
的实现可以自由地做任何事情,但它的名字似乎是这样的 极不可能(海事组织:)

下次发布更多的上下文可能会有所帮助。试着修剪一下是好的 代码会像您所做的那样发布,但是如果发布的代码不再公开
问题(您的答案是否定的)这使得猜测错误变得更加困难。

您应该尝试在数组中使用watch表达式进行逐步调试。请用标题描述问题。“需要帮助”不是一个有用的问题标题。您需要在该数组之前发布代码,以便我们找出任何东西-关于主动传递给该分段的内容的信息太少。我已更新了我的问题可能重复
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => a
            [1] => b
        )

)