我有一个以下格式的数组 - 我希望能够对此进行排序,因此最高价格是第一个 - 我已经尝试过array_multisort()但是到目前为止我没有运气。
$working[33] = array('id' => '33', 'price' => '250.00');
$working[34] = array('id' => '34', 'price' => '277.88');
使用某些功能按价格排序最终产品应如下所示: - 因为277价格大于250
$working[34] = array('id' => '34', 'price' => '277.88');
$working[33] = array('id' => '33', 'price' => '250.00');
答案 0 :(得分:7)
使用usort
排序:
usort($working, function($a, $b) {
return $a['price'] < $b['price'] ? 1 : -1;
});
答案 1 :(得分:2)
使用以下功能解决您的问题
function multisort (&$array, $key) {
$valsort=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$valsort[$ii]=$va[$key];
}
asort($valsort);
foreach ($valsort as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
multisort($multiarr,"order");
答案 2 :(得分:2)
您可以使用array_multisort
执行此操作文档示例。
答案 3 :(得分:1)
删除引号或使用数字排序。
字符串“24”大于“1834”,因为2大于1。
我的解决方案
$working[33] = array('id' => '33', 'price' => '250.00');
$working[34] = array('id' => '34', 'price' => '277.88');
$working[35] = array('id' => '35', 'price' => '1289.57');
$working[36] = array('id' => '36', 'price' => '15.42');
foreach ($working as $key => $row) {
$price[$key] = $row['price'];
}
array_multisort($price, SORT_NUMERIC, $working);
var_dump($working);
输出
array(4) {
[0]=>
array(2) {
["id"]=>
string(2) "36"
["price"]=>
string(5) "15.42"
}
[1]=>
array(2) {
["id"]=>
string(2) "33"
["price"]=>
string(6) "250.00"
}
[2]=>
array(2) {
["id"]=>
string(2) "34"
["price"]=>
string(6) "277.88"
}
[3]=>
array(2) {
["id"]=>
string(2) "35"
["price"]=>
string(7) "1289.57"
}
}
答案 4 :(得分:0)
请参阅Sorting arrays in php以解决您的问题
答案 5 :(得分:-1)
usort($working, function ($a, $b) {
return bccomp($a['price'], $b['price'], 2);
});