2012-05-10 36 views
0

我有一组数据包含关联数组行,我想通过价格对它们进行排序排序数据行的一组,日期等,这无法通过SQL实现因为这些值不是在数据库中 - I简单地具有与以下示例数据大阵列:PHP - 通过价格,日期ASC,DESC等

$data[0] = array(
       'id' => '2', 
       'price' => '400.00', 
       'date' => '2012-05-21', 
       ), 
$data[1] = array(
       'id' => '4', 
       'price' => '660.00', 
       'date' => '2012-02-21', 
       ), 
$data[2] = array(
       'id' => '8', 
       'price' => '690.00', 
       'date' => '2012-01-21', 
       ) 

等..................

我怎么能基于一个选择框这个变量进行排序,如按价格升序/降序和日期ASC/DESC排序

很抱歉,如果这是S实现 - 我只是习惯于通过SQL来实现,在这种情况下,我的思想已经空白。

+0

您是否尝试过的东西没有?如果没有,手册是一个很好的开始:http://php.net/manual/en/array.sorting.php –

+0

谢谢 - 我已经看过,但它只是基于一个单一的数组是不是? –

回答

-1

使用usort

function sortBySubKey(&$array, $key) 
{ 
    return usort($array, create_function('$a,$b', 'if ($a["'.$key.'"] == $b["'.$key.'"]) return 0; return ($a["'.$key.'"] < $b["'.$key.'"]) ? -1 : 1;')); 
} 

你应该确保你的数组保存有效值在这个算术比较的意义上(<),例如。你应该通过日期为Unix时间戳本,价格为浮动等等...

0

下面的示例代码将被编号排序。

$capitals = array(
    array(
      'id' => '2', 
      'price' => '400.00', 
      'date' => '2012-05-21', 
      ), 
    array(
      'id' => '1', 
      'price' => '660.00', 
      'date' => '2012-02-21', 
      ), 
    array(
      'id' => '0', 
      'price' => '690.00', 
      'date' => '2012-01-21', 
      ) 

     ); 




    function cmp($a, $b) 
    { 
    return strcmp($a["id"], $b["id"]); 
    } 


usort($capitals, "cmp"); 

print_r($capitals);