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


How to sort a multidimensional array based on the first element(float value) of each 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中做到这一点?

由于数组中有浮点数,因此不能将数字相减来对数组进行排序。排序函数中的函数必须返回一个大于、等于或小于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'];
        });