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 に答える