0

请查看以下内容:

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 中有虫洞!

有人能告诉我为什么会发生这种情况吗?

谢谢

4

2 回答 2

1
$i_Detail => &$a_Detail

现在$a_Detail是对$a_Header['Details'][$i_Detail]. 两个变量都指向一个值。&如果您不想这样做,请不要使用。

于 2012-06-01T12:41:40.340 回答
0

您的代码示例根本不会影响 $a_detail 。你确定,这是对这个变量的唯一引用吗?你使用像extract()这样的东西吗?

于 2012-06-01T12:37:33.847 回答