Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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 - Fatal编程技术网

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