php usort多维数组按价格排序asc
我有一个这样结构的数组 $product_数组示例=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
[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_数组,“按价格订购”);
上述操作将按预期进行…您收到的结果是什么?可能重复的