2011-06-22 125 views
0

我有這個陣列排序多陣列由內在價值

[Computers] => Array 
(
    [0] => Array 
     (
      [product_id] => 78 
      [category_name] => Computers 
      [sort_order] => 1 
     ) 

    [1] => Array 
     (
      [product_id] => 70 
      [category_name] => Computers 
      [sort_order] => 1 
     ) 

) 


[Scanners] => Array 
(
    [0] => Array 
     (
      [product_id] => 65 
      [category_name] => Scanners 
      [sort_order] => 6 
     ) 

) 

[Printers] => Array 
(
    [0] => Array 
     (
      [product_id] => 58 
      [category_name] => Printers 
      [sort_order] => 3 
     ) 

) 
[Screens] => Array 
(
    [0] => Array 
     (
      [product_id] => 62 
      [category_name] => Screens 
      [sort_order] => 2 
     ) 

) 

我似乎無法找到一種方法,基於密鑰sort_order數組排序。我嘗試了所有here的例子,但沒有運氣。我需要的陣列順序

Computers 
Screens 
Printers 
Scanners 
+0

可能重複http://stackoverflow.com/questions/2699086/php-sort-multidimensional-array-by-value ) – hakre

+0

如果你看看我的問題,我清楚地聲明,我已經嘗試了所有這些解決方案,但沒有運氣,因爲在我的問題中有內部數組。 – Trace

+0

因此,您的實際問題是如何針對您的數據採用其他問題的答案? – hakre

回答

1

嘗試了這一點

function aasort (&$array, $key) { 
    $sorter=array(); 
    $ret=array(); 
    reset($array); 

    foreach ($array as $ii => $va) { 
      foreach ($array[$ii] as $i => $val) { 
       $sorter[$ii]=$val[$key]; 
      } 
    } 
    asort($sorter); 
    foreach ($sorter as $element => $value) { 
     $ret[$element]=$array[$element]; 
    } 
    $array=$ret; 
} 

aasort($array,"sort_order"); 
+4

請歸因於。 – mario

+0

你是什麼意思歸屬 – Trace

+0

再次感謝...那很好運作 – Trace

1

您只需在錯誤的級別排序參數。你想排序最高級別的權利?所以把排序參數也放在那裏。下面的數據結構將使更多的意義:

[Computers] => Array 
(
    [sort_order] => 1, 
    [data] => array(
     [0] => Array 
      (
       [product_id] => 78, 
       [category_name] => Computers, 
       [sort_order] => 1, 
      ) 
    ) 
) 

如果嵌套的排序順序在數據結構深如您有它將使可怕的排序算法。

0

這應該是足夠的:

uasort($yourArray, 
     create_function('$a,$b','return $a[0]["sort_order"] > $b[0]["sort_order"];')); 
[由值PHP排序多維數組(的