Как удалить список массивов на основе ключа? - PullRequest
1 голос
/ 15 мая 2019

Например:

Array   
(    
[0] => Array 
 (
     [id] => 23
     [merchant_id] => 23   
 )
[1] => Array 
 (
     [id] => 24
     [merchant_id] => 46  
 )
)

Я хочу удалить список, который merchant_id, кроме 46, после операции:

Array   
    (    
    [0] => Array 
     (
         [id] => 24
         [merchant_id] => 46  
     )
    )

как лучше всего удалить этот список массива?

Ответы [ 3 ]

2 голосов
/ 15 мая 2019

Привет Пожалуйста, проверьте ниже код

$array = array( 
    array('id' => 23, 'merchant_id' => 23),
    array('id' => 24, 'merchant_id' => 46),
    array('id' => 25, 'merchant_id' => 34),
    array('id' => 26, 'merchant_id' => 46),
);

$final = array();

foreach ($array as $key => $value) {
    if($value['merchant_id'] == 46){
        $final[] = $value;
    }
}

print_r($final);
2 голосов
/ 15 мая 2019

Вы можете получить результат, используя array_filter следующим образом

// suppose your data is in $data variable
$data = [
  ['id' => 23,
     'merchant_id' => 23],

  ['id' => 23,
     'merchant_id' => 46],

 ];

//return true only if marchant_id == 46 
$filtered_array = array_filter($data,function($datum){
                     return $datum["merchant_id"] == 46;
                  });
0 голосов
/ 15 мая 2019

Если вы боретесь с функциями массива, то простой цикл foreach и проверка интересующего вас поля будут хорошо выполняться

$A = [  ['id' => 23, 'merchant_id' => 23  ],
        ['id' => 24, 'merchant_id' => 46  ],
        ['id' => 25, 'merchant_id' => 21  ],
        ['id' => 26, 'merchant_id' => 29  ],
    ];


foreach ( $A as $key => $t ) {
    if( $t['merchant_id'] != 46 ){
        unset($A[$key]);
    }
}

print_r($A);

RESULT

Array
(
    [1] => Array
        (
            [id] => 24
            [merchant_id] => 46
        )

)
...