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';}