php usort多维数组按价格排序asc

php usort多维数组按价格排序asc,php,arrays,usort,Php,Arrays,Usort,我有一个这样结构的数组 $product_数组示例= [0] => Array ( [title] => M-SPA Super Camaro B-150 6-Person Inflatable Bubble Spa [image] => http://ecx.images-amazon.com/images/I/41F6FuitoYL._SL160_.jpg [link] => ht

我有一个这样结构的数组 $product_数组示例=

[0] => Array
        (
            [title] => M-SPA Super Camaro B-150 6-Person Inflatable Bubble Spa
            [image] => http://ecx.images-amazon.com/images/I/41F6FuitoYL._SL160_.jpg
            [link] => http://www.amazon.com/stuff
            [price] => 960.01
            [merchant] => amazon
            [discount] => 16
            [brand] => M-SPA
        )

    [1] => Array
        (
            [title] => M Spa Model B-130 Camaro Hot Tub, 71 by 71 by 28-Inch, Gray
            [image] => http://ecx.images-amazon.com/images/I/41zQwjaPqOL._SL160_.jpg
            [link] => http://www.amazon.com/stuff
            [price] => 695.01
            [merchant] => amazon
            [discount] => 
            [brand] => M-SPA
        )

    [2] => Array
        (
            [title] => M-SPA B-121 4-Person Inflatable Bubble Spa, Castello
            [image] => http://ecx.images-amazon.com/images/I/41gnYSSVD5L._SL160_.jpg
            [link] => http://www.amazon.com/stuff
            [price] => 1,016.25
            [merchant] => amazon
            [discount] => 
            [brand] => M-SPA
        )
我无法以最低到最高的价格订购此阵列。。 此代码不起作用

function order_by_price($a, $b) {
  if ($a['price'] == $b['price']) {
        return 0;
    }
    return ($a['price'] < $b['price']) ? -1 : 1;
}
usort($product_array,order_by_price);
功能订单按价格($a,$b){
如果($a['price']=$b['price']){
返回0;
}
回报($a['price']<$b['price'])?-1:1;
}
usort($product\U array,order\U by\U price);
我错过了什么
谢谢

您在最后一个数组元素
中有一个格式不正确的数值。。。[price]=>1016.25…

这是一种“货币格式”,应该以字符串形式显示:
[price]=>“1016.25”

此外,对
usort
参数也要特别小心:

注意:从比较函数返回非整数值, 例如float,将导致内部强制转换为 回调函数的返回值。因此,0.99和0.1等值都是 强制转换为整数值0,这将比较以下值: 平等

正确替换(格式化)后,按如下所示更改代码:

function order_by_price($a, $b) {
    $floats = str_replace(",", "", [$a['price'], $b['price']]);
    return ($floats[0] == $floats[1])? 0 : (($floats[0] < $floats[1]) ? -1 : 1);
}

usort($product_array,"order_by_price");
功能订单按价格($a,$b){
$floats=str_replace(“,”,“,[$a['price'],$b['price']);
返回($floats[0]==$floats[1])?0:($floats[0]<$floats[1])?-1:1;
}
usort($product_数组,“按价格订购”);

上述操作将按预期进行…

您收到的结果是什么?可能重复的