2011-06-22 82 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排序多维数组(的