我有一个数组,它包含一堆数组元素,每个数组元素各包含两个元素。这是阵列:
Array
(
Array(0.577677, '/art and entertainment/visual art and design/painting'),
Array(0.576528, '/technology and computing/internet technology/email'),
Array(0.197858, '/business and industrial/energy/oil/oil and gas prices'),
Array(0.707193, '/sports/wrestling'),
Array(0.506016, '/style and fashion/beauty/cosmetics'),
Array(0.144159, '/food and drink/beverages/alcoholic beverages/cocktails and beer')
)
现在,我想根据每个数组元素的第一个元素对这个数组进行排序。
例如,在上面的数组中,排序数组中的第一个元素应该是Array(0.707193 [1], '/sports/wrestling')
,最后一个元素应该为Array (0.144159, '/food and drink/beverages/alcoholic beverages/cocktails and beer')
我如何在PHP中做到这一点?
由于数组中有浮点数,因此不能将数字相减来对数组进行排序。排序函数中的函数必须返回一个大于、等于或小于0的整数。
同样如手册中所述:
注意:从比较函数(如float)返回非整数值将导致回调返回值的内部强制转换为integer。因此,0.99和0.1等值都将被强制转换为0的整数值,这将比较这些值是否相等。
因此,只需使用<
/>
和==
来比较您的数字并对数组进行排序:
uasort($arr,function($a,$b){
if($a['0'] == $b['0'])
return 0;
return $a['0'] > $b['0'] ? -1 : 1;
});
print_r($arr);
uasort($memberArray,function($a,$b){
return $a['0'] - $b['0'];
});