как пропустить массив из многомерного массива на основе их значений - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть входной массив:

 Array(
        Array(
            [vehicle] => BUS NO.1
            [trip_name] => Trip00011
            [running_km] => 5000
        )
        Array(
            [vehicle] => BUS NO.2
            [trip_name] => Trip00021
            [running_km] => 2400
        )
        Array(
            [vehicle] => BUS NO.1
            [trip_name] => Trip00011
            [running_km] => 0
        )
        Array(
            [vehicle] => BUS NO.2
            [trip_name] => Trip00011
            [running_km] => 0
        )
        Array(
            [vehicle] => BUS NO.2
            [trip_name] => Trip00021
            [running_km] => 0
        )
    )

Мне нужно изменить этот массив на:

Array(
    Array(
        [vehicle] => BUS NO.1
        [trip_name] => Trip00011
        [running_km] => 5000
    )
    Array(
        [vehicle] => BUS NO.2
        [trip_name] => Trip00021
        [running_km] => 2400
    )
    Array(
        [vehicle] => BUS NO.2
        [trip_name] => Trip00011
        [running_km] => 0
    )
)

Пожалуйста, посмотрите на два массива. Мне нужно опустить массив running_km => 0 на основе значения, присутствующего в running_km для того же vehicle и того же trip_name. Не могли бы вы помочь мне сделать это.

1 Ответ

0 голосов
/ 15 сентября 2018

Если вы зациклили массив, вы можете создать ключ составного массива.(Пример: «BUS NO.2 Trip00021»).
И если пробег больше, то перезапишите элемент в новом массиве.

После цикла я делаю array_values, чтобы удалить ключи ассоциативного массива для индексированных ключей массива.

foreach($arr as $item){
    $key = $item['vehicle'] . $item['trip_name'];
    if(isset($new[$key])){
        if($item['running_km'] > $new[$key]['running_km']) $new[$key] = $item;
    }else{
        $new[$key] = $item;
    }

}
$new = array_values($new);

var_dump($new);

Вывод:

array(3) {
  [0]=>
  array(3) {
    ["vehicle"]=>
    string(8) "BUS NO.1"
    ["trip_name"]=>
    string(9) "Trip00011"
    ["running_km"]=>
    string(4) "5000"
  }
  [1]=>
  array(3) {
    ["vehicle"]=>
    string(8) "BUS NO.2"
    ["trip_name"]=>
    string(9) "Trip00021"
    ["running_km"]=>
    string(4) "2400"
  }
  [2]=>
  array(3) {
    ["vehicle"]=>
    string(8) "BUS NO.2"
    ["trip_name"]=>
    string(9) "Trip00011"
    ["running_km"]=>
    string(1) "0"
  }
}

https://3v4l.org/4qX7q

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...