1

unset(key)ネストされた配列の値に基づいてPHP関数を使用して、親配列全体を削除しようとしました。

ネストされた配列は次のようになります

Array ( 
[0] => Array ( 
    [ID] => 9909 
    [SHIPPING_AMOUNT] => 5 
    [TOTAL_TAX] => 0 
    [GRAND_AMOUNT] => 49.97 
    [ITEMS_AMOUNT] => 44.97 
    [ITEMS] => Array ( 
        [0] => Array ( 
            [CODE] => TEST
            [QTY] => 1 
            [UNIT_PRICE] => 14.99 ) 
        [1] => Array ( 
            [CODE] => NNKIT 
            [QTY] => 1 
            [UNIT_PRICE] => 9.99 ) 
        [2] => Array ( 
            [CODE] => MAINKIT 
            [QTY] => 1 
            [UNIT_PRICE] => 19.99 )
        ) 
    ) 
[1] => Array ( 
    [ID] => 9910 
    [SHIPPING_AMOUNT] => 5 
    [TOTAL_TAX] => 0 
    [GRAND_AMOUNT] => 74.96 
    [ITEMS_AMOUNT] => 69.96 
    [ITEMS] => Array ( 
        [0] => Array ( 
            [CODE] => NNKIT 
            [QTY] => 1 
            [UNIT_PRICE] => 9.99 ) 
        [1] => Array ( 
            [CODE] => MAINKIT 
            [QTY] => 3 
            [UNIT_PRICE] => 19.99 ) 
        ) 
    ) 
[2] => Array ( 
    [ID] => 9911 
    [SHIPPING_AMOUNT] => 5 
    [TOTAL_TAX] => 0 
    [GRAND_AMOUNT] => 44.98 
    [ITEMS_AMOUNT] => 39.98 
    [ITEMS] => Array ( 
        [0] => Array ( 
            [CODE] => MAINKIT 
            [QTY] => 2 
            [UNIT_PRICE] => 19.99 ) 
        ) 
    ) 
[3] => Array ( 
    [ID] => 9912 
    [SHIPPING_AMOUNT] => 5 
    [TOTAL_TAX] => 0 
    [GRAND_AMOUNT] => 29.98 
    [ITEMS_AMOUNT] => 24.98 
    [ITEMS] => Array ( 
        [0] => Array ( 
            [CODE] => TEST
            [QTY] => 1 
            [UNIT_PRICE] => 14.99 ) 
        [1] => Array ( 
            [CODE] => NEWTEST
            [QTY] => 1 
            [UNIT_PRICE] => 9.99 )
        )
    ) 

私がチェックする値はですCODE = MAINKIT。ネストされた配列に存在しない場合は、メイン配列を削除する必要があります (この場合は parent ) が、親の配列ではなく、ネストされた配列からarray[3]何らかの形で返されます。key

PHP コード:

foreach($array as $key => $value){
    if(is_array($value) && $value['CODE'] != 'MAINKIT')
          unset($key);
}
4

1 に答える 1

3

CODE要素は$value['ITEMS']直接ではなく、配列内にあります$value

がどのアイテムにも含まれていないかどうかを確認するMAINKITには、すべてのアイテムをループして、それらのいずれかが一致するかどうかをテストする必要があります。削除しない場合は、配列要素を削除します。

試す:

foreach($array as $key => $value){
    if (is_array($value) && is_array($value['ITEMS']))
        $found_mainkit = false;
        foreach ($value['ITEMS'] as $item) {
            if($item['CODE'] == 'MAINKIT') {
                $found_mainkit = true;
                break;
            }
        }
        if (!$found_mainkit) {
            unset($array[$key]);
        }
    }
}
于 2016-01-21T18:02:33.240 に答える