PHP使用Usort对多维数组进行排序

时间:2014-03-02 23:30:09

标签: php arrays multidimensional-array usort

我见过类似的问题,我根本不明白答案。希望如果我具体询问我的代码,会点击一下。我已经被困了一段时间,非常感谢你的帮助。

我有一个数组:     foreach($ showresult as $ display)     {     $ display_result [] = array('parkid'=> $ display ['parkid'],

                 'trailsys' =>$display['trailsys'],

                         'trailset' =>$display['trailset'],

                         'name' =>$display['name'], 

                         'description' =>$display['description'], 

                         'url' =>$display['url'], 

                                 'ldes' =>$display['ldes'],

                                 'ltxt' =>$display['ltxt'],

                         'address' =>$display['address'], 

                         'city' =>$display['city'], 

                         'zip' =>$display['zip'], 

                         'phone' =>$display['phone'], 

                         'pos' =>$display['pos'],   

                         'T1' => $display['systemname'],

                 'T2'=> $display['name']);

 {                           'state' =>$display['state'], 

数组中的每个项目都有一个T1值。 T2可以有一个值,或者它可以是0.我想用T1按字母顺序排列列表。在某些情况下,将有三个或四个条目,其中T1是相同的,然后我想通过T2按字母顺序排列。我很难过。

请帮忙。

1 个答案:

答案 0 :(得分:0)

您应该尝试使用usort()函数(http://www.php.net/usort)。它允许您通过自定义函数对数组进行排序。所以,在你的情况下,它会是这样的:

<?
  usort($array,function($a,$b) {
    if ($a['T1'] < $b['T1']) return -1;
    elseif ($a['T1'] > $b['T1']) return 1;
    else {
      if ($a['T2'] < $b['T2']) return -1;
      elseif ($a['T2'] > $b['T2']) return 1;
      else return 0;
    }
  });
?>

你可以检查出来并根据你的需要进行调整。

请告诉我这是否适合您。

相关问题