我有一个数组,其中包含一些数据,包括距离。
阵列如下:
$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"
}