按十进制值排序多维数组

stw*_*ite 6 php sorting floating-point usort multidimensional-array

我要做的是对包含十进制值的多维数组进行排序.根据我的测试,浮标很难正确订购.

Array
(
    [0] => Array
        (
            [company] => Ebay
            [weight] => 4.6
        )

    [1] => Array
        (
            [company] => Ebay
            [weight] => 1.7
        )

    [2] => Array
        (
            [company] => Ebay
            [weight] => 3.7
        )
)


usort($array, 'order_by_weight');

// Sorts DESC highest first
function order_by_weight($a, $b) {
    return $b['weight'] - $a['weight'];
}
Run Code Online (Sandbox Code Playgroud)

降序排序这些数字的最佳方法是什么?

zer*_*kms 18

$arr = array(
    array('company' => 'A', 'weight' => 4.6),
    array('company' => 'B', 'weight' => 1.7),
    array('company' => 'C', 'weight' => 3.7),
);

usort($arr, 'order_by_weight');

function order_by_weight($a, $b) {
    return $b['weight'] > $a['weight'] ? 1 : -1;
}

var_dump($arr);
Run Code Online (Sandbox Code Playgroud)

PS:这不是火箭科学 - 这个确切的"技巧"被用作http://php.net/usort的第一个例子