选择与阵列的距离值最小的阵列



我有一个数组,其中包含一些数据,包括距离。

阵列如下:

$arr = array
(
0 => array
(
'distance' => 0.00037306794379581,
'city' => 'a'
),
1 => array
(
'distance' => 0.00070784665463427,
'city' => 'b'
),
2 => array
(
'distance' => 0.0033977868300665,
'city' => 'c'
),
3 => array
(
'distance' => 0.012137901860616,
'city' => 'd'
),
);

我想得到distance最少的数组,在这种情况下,它应该是第一个

0 => array ( 'distance' => 0.00037306794379581, 'city' => 'a' )

我可以使用获得与整个阵列的最小距离

$min = array_reduce($arr, function($min, $details) {
return min($min, $details['distance']);
}, PHP_INT_MAX);

但是如何获得具有最小距离的阵列

0 => array ( 'distance' => 0.00037306794379581, 'city' => 'a' )

或者至少用的最小距离到达城市

您可以按距离升序排序,然后取第一个元素。

<?php
$array =
[
[
'distance' => 3,
'city' => 'Leeds'
],
[
'distance' => 1,
'city' => 'Manchester'
],
[
'distance' => 2,
'city' => 'Chichester'
]
];
array_multisort(array_column($array, 'distance'), $array);
var_dump($array[0]);

输出:

array(2) {
["distance"]=>
int(1)
["city"]=>
string(10) "Manchester"
}

最新更新