请看一下以下内容:
foreach($a_Header['Details'] as $i_Detail => &$a_Detail)
{
echo "{$a_Detail['VEH_TREAD_OFF']}\n";
// Make a back-up of the value
$BAK_TREAD_OFF = $a_Detail['VEH_TREAD_OFF'];
// Copy some data from the saved header
foreach(array
(
'POD_QTYORD',
'VEH_TREAD_OFF',
'RPM_SCRM_FIXEDPRICE',
'RPM_TRM_FIXEDPRICE',
'RPM_TRM_COSTPERMM',
'RPM_CTS_CASINGCOST',
'CHARGE_DESC',
'Hide',
) as $s_Column)
{
$a_Header['Details'][$i_Detail][$s_Column] = $a_SavedHeader['Details'][$i_Detail][$s_Column];
}
echo "{$a_Detail['VEH_TREAD_OFF']}\n";
// Now restore our value
$a_Detail['VEH_TREAD_OFF'] = $BAK_TREAD_OFF;
}您可以看到,在进入for循环之前,我已经备份了一个值,然后恢复该值。
这是因为由于某种原因,它在循环过程中丢失了。
我不是一个PHP专家,但这让我困惑不已,因为我不明白为什么修改一个变量会影响另一个变量,除非PHP中有虫洞!
有人能告诉我为什么会发生这种事吗?
谢谢
发布于 2012-06-01 20:41:40
$i_Detail => &$a_Detail现在$a_Detail是对$a_Header['Details'][$i_Detail]的引用。这两个变量都引用单个值。如果您不想使用&,请不要使用它。
发布于 2012-06-01 20:37:34
您的代码示例根本不会影响$a_detail。您确定这是对此变量的唯一引用吗?您是否使用了诸如extract()之类的东西?
https://stackoverflow.com/questions/10850078
复制相似问题