簡體   English   中英

如果鍵不相同,如何取消數組關聯的多維數據集

[英]How to unset array associative multidimensional if key not same

我有這樣的數據:

[1] => Array
    (
        [COMPANY_SERVICE_ID] => CS01
        [COMPANY_NAME] => HANOMAN SAKTI PRATAMA, PT - JAKARTA
        [TARIFF_CURRENCY] => IDR
        [SELLING_SERVICE_ID] => SS01
        [CONTAINER_TYPE_ID] => DC
        [SERVICE_NAME] => CONTAINER TRUCKING SERVICE
        [FROM_QTY] => 1
        [TO_QTY] => 100
        [FROM_NAME] => TANJUNG PRIOK
        [FROM_LOCATION_ID] => L096
        [TO_NAME] => BALARAJA
        [TO_LOCATION_ID] => L002
        [RESULT_LOCATION] => Array
            (
                [L001] => Array
                    (
                        [TARIF_20] => 1.500.000,00
                        [TARIF_40] => 1.750.000,00
                        [TARIF_45] => 5.500.000,00
                        [TARIF_4H] => 3.500.000,00
                    )

                [L002] => Array
                    (
                        [TARIF_20] => 500.000,00
                    )

            )

    )

如果RESULT_LOCATION中的值與TO_LOCATION_ID的值不同,我想取消RESULT_LOCATION的值。

我該怎么辦?

我試圖用這樣的代碼刪除:

foreach ($hasil_jakarta as $key => $value) {
        foreach ($value['RESULT_LOCATION'] as $key1 => $value1) {
            if ($value['TO_LOCATION_ID'] != $value['RESULT_LOCATION'][$key1]) {
                unset($hasil_jakarta[$key]['RESULT_LOCATION'][$key1]);
            }
        }
    }

但所有RESULT_LOCATION的值均已刪除。 我的代碼有什么問題?

您不必測試值,而是鍵。 然后,使用不同的鍵對set()數組進行操作。

這是一個例子:

<?php
$a = array(
        'COMPANY_SERVICE_ID' => 'CS01',
        'COMPANY_NAME' => 'HANOMAN SAKTI PRATAMA, PT - JAKARTA',
        'TARIFF_CURRENCY' => 'IDR',
        'SELLING_SERVICE_ID' => 'SS01',
        'CONTAINER_TYPE_ID' => 'DC',
        'SERVICE_NAME' => 'CONTAINER TRUCKING SERVICE',
        'FROM_QTY' => 1,
        'TO_QTY' => 100,
        'FROM_NAME' => 'TANJUNG PRIOK',
        'FROM_LOCATION_ID' => 'L096',
        'TO_NAME' => 'BALARAJA',
        'TO_LOCATION_ID' => 'L002',
        'RESULT_LOCATION' => array(
                'L001' => array(
                        'TARIF_20' => '1.500.000,00',
                        'TARIF_40' => '1.750.000,00',
                        'TARIF_45' => '5.500.000,00',
                        'TARIF_4H' => '3.500.000,00'
                ),
                'L002' => array(
                        'TARIF_20' => '500.000,00'
                )
        )
);


foreach ($a['RESULT_LOCATION'] as $key => $value) {
    if ($key != $a['TO_LOCATION_ID']) {
        unset($a['RESULT_LOCATION'][$key]);
    }
}

結果將是:

php > print_r($a);
Array
(
    [COMPANY_SERVICE_ID] => CS01
    [COMPANY_NAME] => HANOMAN SAKTI PRATAMA, PT - JAKARTA
    [TARIFF_CURRENCY] => IDR
    [SELLING_SERVICE_ID] => SS01
    [CONTAINER_TYPE_ID] => DC
    [SERVICE_NAME] => CONTAINER TRUCKING SERVICE
    [FROM_QTY] => 1
    [TO_QTY] => 100
    [FROM_NAME] => TANJUNG PRIOK
    [FROM_LOCATION_ID] => L096
    [TO_NAME] => BALARAJA
    [TO_LOCATION_ID] => L002
    [RESULT_LOCATION] => Array
        (
            [L002] => Array
                (
                    [TARIF_20] => 500.000,00
                )

        )

)

希望能幫助到你。

編輯

我看到了您的代碼片段,並根據您的需要調整了循環:

foreach ($hasil_jakarta as $h_j_key => $h_j_value) {
    foreach ($h_j_value['RESULT_LOCATION'] as $key => $value) {
        if ($key != $h_j_value['TO_LOCATION_ID']) {
            unset($hasil_jakarta[$h_j_key]['RESULT_LOCATION'][$key]);
        }
    }
}

您的代碼幾乎不錯,但未設置的行卻沒有。 在這種情況下,您需要從$hasil_jakarta數組中取消設置變量。

祝好運 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM