Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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中的变量被覆盖_Php_Variables - Fatal编程技术网

PHP中的变量被覆盖

PHP中的变量被覆盖,php,variables,Php,Variables,我有一个名为$products的数组,其中包含各种产品数据,还有一个名为$discounters的数组,其中键是产品项目编号。当我在$products上循环时,我想定义一个局部变量,使访问特定折扣更容易,如下所示: foreach ($products as $prod) { $discount = $discounts[$prod->item_number]; // do stuff } 经过大量调试后,我确定由于某种原因,上述代码导致$discounters的最后一项

我有一个名为
$products
的数组,其中包含各种产品数据,还有一个名为
$discounters
的数组,其中键是产品项目编号。当我在
$products
上循环时,我想定义一个局部变量,使访问特定折扣更容易,如下所示:

foreach ($products as $prod) {
    $discount = $discounts[$prod->item_number];
    // do stuff
}
经过大量调试后,我确定由于某种原因,上述代码导致
$discounters
的最后一项被上一项的内容覆盖


什么可能会导致这种奇怪的现象,我如何给
$折扣[$prod->item_number]
一个较短的名称而不引起它呢?

每当发生类似这种奇怪的事情时,我总是确保服务器上没有“意外”启用它。我看不出您引用的代码会导致修改$折扣数组的原因。“注册全局”已启用,或者您在其他地方搞砸了。

您是否在任何地方使用引用?您确定,
$discounters
的最后一项被覆盖,而不仅仅是
$discounter
?在这种情况下,
$discounts
总是被更新的var覆盖,因为它只是一个普通的var。我已经删除了除该行之外的整个循环,然后在每次迭代中转储整个
$discounters
数组。最后的第二次迭代以某种方式覆盖了
$discounters
最后一项的内容。如果我正确理解这个Register Globals,那么它可能不是这里的罪魁祸首,因为
$discounters
在循环的一次迭代中发生了变化。使用以下代码进行检查:If(ini_get('Register_Globals')==1){echo'ON';}