2011-11-01 73 views
7

排序我打破我的头试图找出如何做到这一点的权利,我有这样的多维数组:多维数组的字符串

Array 
(
    [0] => Array 
     (
      [time] => November 1st 10:10 
      [query] => movies 
      [set] => 1 
      [matches] => No matching results 
      [results] => 5 
     ) 

    [1] => Array 
     (
      [time] => November 1st 10:10 
      [query] => cinemas 
      [set] => 1 
      [matches] => No matching results 
      [results] => 2 
     ) 

) 

在现实生活中,可能会有很多更子数组,但他们说我想按字母顺序排列“查询”,我该如何实现?

我只看到了整型或关键指标的解决方案,最终的结果,在这种情况下,应该是:

Array 
    (
     [0] => Array 
      (
       [time] => November 1st 10:10 
       [query] => cinemas 
       [set] => 1 
       [matches] => No matching results 
       [results] => 2 
      ) 
     [1] => Array 
      (
       [time] => November 1st 10:10 
       [query] => movies 
       [set] => 1 
       [matches] => No matching results 
       [results] => 5 
      ) 

    ) 

非常感谢,谢谢。

回答

15
function querySort ($x, $y) { 
    return strcasecmp($x['query'], $y['query']); 
} 

usort($myArray, 'querySort'); 
+0

不适用于我! –

+0

作为我的魅力工作。 –

1

我经常使用此功能多维数组进行排序:

function sortmulti ($array, $index, $order, $natsort=FALSE, $case_sensitive=FALSE) { 
     if(is_array($array) && count($array)>0) { 
      foreach(array_keys($array) as $key) { 
       $temp[$key]=$array[$key][$index]; 
      } 
      if(!$natsort) { 
       if ($order=='asc') { 
        asort($temp); 
       } else {  
        arsort($temp); 
       } 
      } 
      else 
      { 
       if ($case_sensitive===true) { 
        natsort($temp); 
       } else { 
        natcasesort($temp); 
       } 
       if($order!='asc') { 
       $temp=array_reverse($temp,TRUE); 
       } 
      } 
      foreach(array_keys($temp) as $key) { 
       if (is_numeric($key)) { 
        $sorted[]=$array[$key]; 
       } else {  
        $sorted[$key]=$array[$key]; 
       } 
      } 
      return $sorted; 
     } 
    return $sorted; 
} 

作品的魅力:)

1

与@Hammerite答案, 同意,但这里是这样做的最短路径种类的分类。你可以达到同样的效果,从PHP 5.3开始,通过使用匿名函数

usort($myArray, function($x, $y) { 
     return strcasecmp($x['query'] , $y['query']); 
}); 

17.1。 - 仅语法修复