获取具有不同数组的字段的最低值

问题描述 投票:0回答:3

我借助Google Distance Matrix API在PHP中创建了以下数组。

现在我需要比较[distance]字段,得到最低值并将数组的键保存在变量中。我该怎么做呢?我看了min(),但这似乎不适用于多个阵列。

Array
(
[utrecht_cs] => Array
    (
        [name] => utrecht_cs
        [address] => 3511 AX Utrecht, Netherlands
        [distance] => 95
    )

[groningen_cs] => Array
    (
        [name] => groningen_cs
        [address] => 9726 AC Groningen, Netherlands
        [distance] => 102.47
    )

[zwolle_cs] => Array
    (
        [name] => zwolle_cs
        [address] => 8011 CW Zwolle, Netherlands
        [distance] => 2.54
    )

)
php arrays min google-distancematrix-api
3个回答
1
投票

您可以使用uasort()对数组进行排序。然后,你可以使用key()获得第一个密钥。

$array = array(
    'utrecht_cs' => array(
        'name' => 'utrecht_cs',
        'address' => '3511 AX Utrecht, Netherlands',
        'distance' => 95
    ),
    'groningen_cs' => array(
        'name' => 'groningen_cs',
        'address' => '9726 AC Groningen, Netherlands',
        'distance' => '102.47'
    ),
    'zwolle_cs' => array(
        'name' => 'zwolle_cs',
        'address' => '8011 CW Zwolle, Netherlands',
        'distance' => '2.54'
    )
);

uasort($array, function($a, $b) { return $a['distance'] <=> $b['distance']; });
$first_key = key($array);

输出:

zwolle_cs

您也可以使用(对于7.0之前的PHP版本):

uasort($array, function($a, $b) { 
   return $a['distance'] < $b['distance'] ? -1 : 1; 
});

0
投票

您想使用usort对多维数组进行排序。

http://php.net/manual/en/function.usort.php

function sortNumbers($a, $b)
{
    return $a['distance'] <=> $b['distance'];
}

usort($yourArray,'sortNumbers');

阅读本文以获取更多信息https://delboy1978uk.wordpress.com/2012/09/19/sorting-multidimensional-arrays-using-php/


0
投票

另一种排序方式。从数组中提取distance列并对其进行排序,根据以下内容对原始数组进行排序:

array_multisort(array_column($array, 'distance'), $array);
$result = key($array);
© www.soinside.com 2019 - 2024. All rights reserved.