以下是我的数组$geocodedList
的结果:
array (size = 6)
0 =>
object (Geocoder \ Result \ Geocoded) [24]
protected 'latitude' => float -22.4363597
protected 'longitude' => float -46.8106841
public 'distance' => float 1500
1 =>
object (Geocoder \ Result \ Geocoded) [14]
protected 'latitude' => float -22.4349613
protected 'longitude' => float -46.8275498
public 'distance' => float 1740
2 =>
object (Geocoder \ Result \ Geocoded) [25]
public 'distance' => float 152
这是一个内部有多个对象(Geocoded)的数组。 我想通过这些对象的'distance'属性来组织这个数组。 我希望结果是:
0 => public 'distance' => 152 (item 2 of old array)
1 => public 'distance' => 1500 (item 0 of old array)
2 => public 'distance' => 1740 (item 1 of old array)
如何进行?我尝试了几件事但却无法得到任何东西。
答案 0 :(得分:0)
您可以使用usort()
指定自定义比较方法:
function cmp($a, $b) {
if ($a->distance == $b->distance) {
return 0;
}
return ($a->distance < $b->distance) ? -1 : 1;
}
usort($array, "cmp");
或等效的匿名函数:
usort($array, function ($a, $b) {
if ($a->distance == $b->distance) {
return 0;
}
return ($a->distance < $b->distance) ? -1 : 1;
});