如何从数组php中获取最大值

par*_*pik 2 php cakephp

如何从下面的阵列中获得最大距离?当我尝试print_r($ data)时,我得到以下输出:

Array
(
    [0] => Array
        (
            [distance] => 1.7 km
            [time] => 3 mins
            [distance_value] => 1720
            [time_value] => 192
        )

    [1] => Array
        (
            [distance] => 4.2 km
            [time] => 10 mins
            [distance_value] => 4207
            [time_value] => 587
        )

)
Run Code Online (Sandbox Code Playgroud)

我想回声4.2 km,因为它是我阵列中的最大距离.

foreach ($delivery as $key => $value) {
    if($key==0) {
        $mysource = $pickup;
    } else {
        $mysource = $delivery[$key-1];
    }
    $data[$key] = $this->GetDrivingDistance($mysource,$value);
    if(!empty($data[$key])) {
        $dist += max($data[$key]['distance']); 
    }
}
echo $dist; exit();
print_r($data); exit();
Run Code Online (Sandbox Code Playgroud)

Tha*_*lan 6

您可以使用内置函数:

echo max(array_map('floatval',array_column($array, "distance")))." km";
Run Code Online (Sandbox Code Playgroud)

说明:

  • array_column - 将您的数组转换为单维
  • array_map - 对字符串应用浮点运算.这很重要,因为您的字符串比较错误地比较了两个数字.当应用浮动函数时,您km将被删除,因此稍后追加.

字符串示例:

11.7小于4.2,因为它比较第一个字符并按1,2,3排列...


输出:

4.2 km
Run Code Online (Sandbox Code Playgroud)

注意: 如果所有值都在km,这是合适的,如果是其他单位,则还需要解决方法!