Php 更改一个值会影响另一个值
请看以下内容:Php 更改一个值会影响另一个值,php,Php,请看以下内容: 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($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中存在虫洞
有人能告诉我为什么会这样吗
谢谢您的代码示例根本不会影响$a_详细信息。您确定这是该变量的唯一引用吗?您是否使用类似extract()的内容
现在,
$a_Detail
是对$a_标题['Details'][$i_Detail]
的引用。两个变量都引用一个值。如果你不想这样做,就不要使用&
。你怎么看它丢失了?在我添加“备份和还原”代码之前,我会回显d之前显示值,之后没有值的内容。在你显示的代码中,我看不到任何会破坏$a_Detail['VEH_-TREAD_-OFF']的内容代码>。这是100%的问题代码吗?你不是在一个有这个或什么的函数里面吗?(在PHP中,函数有自己的作用域)$a_Detail
来自哪里?如何初始化它?现在更新代码以显示$a_Detail
的来源。注意&
-我想知道这是否创建了一个引用而不是一个新变量-?你明白我当时为什么感到困惑了吗?但事实上你错了,就像我一样。变量$a_detail被定义为对$a_header['detail']元素的引用,因此一个元素的更改将改变另一个元素。谢谢,我已经计算出了这一点,多亏了上面的注释。顺便说一句,这不是我的密码。
$i_Detail => &$a_Detail