按“价格”值对数组进行排序

时间:2013-07-26 09:26:38

标签: php arrays sorting

我有一个以下格式的数组 - 我希望能够对此进行排序,因此最高价格是第一个 - 我已经尝试过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');

6 个答案:

答案 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);
    });