如何根据每个数组的第一个元素(浮点值)对多维数组进行排序?

时间:2016-01-05 13:31:59

标签: php arrays sorting multidimensional-array

我有一个包含一堆数组元素的数组,每个数组元素包含两个元素。这是数组:

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中执行此操作?

2 个答案:

答案 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'];
        });