0

Possible Duplicate:
How do I sort a multidimensional array in php

I have multidimensional array, for exaple this:

$mas = array("s",array("c","b","a"),array(3,5,1),"a",array("s",array("z","a")));

I want sort (ascending) all array-elements, i write recursive function, but it is not working, please tell me, who I have a wrong ?

$mas = array("s",array("c","b","a"),array(3,5,1),"a",array("s",array("z","a")));



function sortsort($m) {
    sort($m);
    foreach ($m as &$v) {
        if (is_array($v)) {
             sortsort($v);
        }
    }
    return $m;
}



  var_dump(sortsort($mas));
Community
  • 1
  • 1
  • 3
    If you change the definition from `sortsort($m)` to `sortsort(&$m)`, does that solve the problem? – cdhowie Jul 19 '12 at 10:16

2 Answers2

1

use

function aasort (&$array, $key) {
  $sorter=array();
  $ret=array();
  reset($array);
  foreach ($array as $ii => $va) {
      $sorter[$ii]=$va[$key];
  }
  asort($sorter);
  foreach ($sorter as $ii => $va) {
      $ret[$ii]=$array[$ii];
  }
  $array=$ret;
}

aasort($your_array,"order");

Hiren Soni
  • 574
  • 3
  • 11
1

try this

$mas = array("s",array("c","b","a"),array(3,5,1),"a",array("s",array("z","a")));
function sortsort(&$m) {
    sort($m);
    foreach ($m as $k=>$v) {
        if (is_array($v)) {
             sortsort($m[$k]);
        }
    }
    return $m;
}

print_r(sortsort($mas));
FatalError
  • 922
  • 12
  • 31