我有一个包含一堆数组元素的数组,每个数组元素包含两个元素。这是数组:
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 :(得分:2)
由于数组中有浮点数,因此无法相互减去数字以排序数组。排序函数中的函数必须返回一个更大,等于或小于0的整数。
同样如manual中所述:
<强>注意:强> 从比较函数返回非整数值(例如float)将导致回调的返回值的内部强制转换为整数。因此,诸如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);
答案 1 :(得分:0)
uasort($memberArray,function($a,$b){
return $a['0'] - $b['0'];
});