Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据多维数组的值从多维数组中删除ommit数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 如何根据多维数组的值从多维数组中删除ommit数组

Php 如何根据多维数组的值从多维数组中删除ommit数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个输入数组: Array( Array( [vehicle] => BUS NO.1 [trip_name] => Trip00011 [running_km] => 5000 ) Array( [vehicle] => BUS NO.2 [trip_name] => Trip00021

我有一个输入数组:

 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
中的值省略
running_km=>0
数组。你能帮我做这个吗。

如果你循环数组,你可以构建一个复合数组键。(例如:“2号公交车Trip00021”)。
如果运行公里数大于,则覆盖新数组中的项目

在循环之后,我执行一个数组_值,将关联数组键移除为索引数组键

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"
  }
}

此问题缺少任何代码来向我们表明您已尝试自行解决此问题。如果您尝试了一些东西,请向我们展示您尝试了什么,预期输出的示例以及您实际得到的结果。如果你还没有尝试过任何东西,你需要在发布之前尝试一下。我们可以帮助您使用现有代码,但我们不会为您编写。所以这不是免费的编码服务。请阅读:还有,我的答案对你来说不适用吗@miya?