我使用谷歌矩阵计算多个地址的最佳距离。 我希望显示一个小距离的id 我的数组通过API返回
$com = Array(
[0] => Array (
[id] => 12
[km] => 833 km
)
[1] => Array (
[id] => 4
[km] => 546km
)
[1] => Array (
[id] => 45
[km] => 1200km
)
)
我想显示小距离的ID(对于这个例子,id是“4”)
我试过这个:
$min = array_reduce($commercant,
function ($min, $item) {
if ($item['km'] < $min['km']) {
return $item;
}
return $min;
},
array('id' => -1, 'km' => PHP_INT_MAX));
echo $min['id'];
此代码不起作用,我不知道为什么! 如果你有一个想法.... THX
答案 0 :(得分:0)
使用此代码
usort($com, function($a, $b) {
return $a['km'] - $b['km'];
});
echo !empty($com[0]['id']) ? $com[0]['id'] : "";
它将按照距离的desc顺序对数组进行排序,从这个排序的数组中你可以选择数组的第一个元素。
希望这会对你有所帮助!
答案 1 :(得分:0)
通过普通排序,您可以实现结果。
http://php.net/manual/en/function.usort.php
$x = [
['id' => 12, 'km' => '833km'],
['id' => 4, 'km' => '546km'],
['id' => 45, 'km' => '1200km']
];
function cmp_by_kms($arr1, $arr2) {
$km1 = intval($arr1['km']);
$km2 = intval($arr2['km']);
if ($km1 == $km2) { return 0; }
return ($km1<$km2) ? -1 : 1;
}
usort($x, "cmp_by_kms");
print_r($x[0]);
#=> Array
(
[id] => 4
[km] => 546km
)