Sort multidimensional array alphabetically

11,513

Solution 1

Aha! You need uksort();

Comparison of PHP sorting functions. (dam useful)

Edit: Reason is, you seem to want to sort inside arrays as well? AFAIK ksort by itself doesn't do that - it outright ignores the value of the original array.

Edit2: This ought to work (though uses recursion instead of kusort):

function ksort_deep(&$array){
    ksort($array);
    foreach($array as &$value)
        if(is_array($value))
            ksort_deep($value);
}

// example of use:
ksort_deep($allowed);

// see it in action
echo '<pre>'.print_r($allowed,true).'</pre>';

Important: As a side effect of not using uksort() if the same array references to itself, you get an infinite loop. This won't happen in normal cases, but you never know :)

Solution 2

ksort() ?

Solution 3

You use

ksort($allowed);

http://php.net/manual/en/function.ksort.php

Solution 4

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

as described here. The 'See Also' section is usually very helpful

Share:
11,513
Alex
Author by

Alex

I'm still learning so I'm only here to ask questions :P

Updated on June 07, 2022

Comments

  • Alex
    Alex almost 2 years

    How can I sort a array like this alphabetically:

    $allowed = array(
      'pre'    => array(),
      'code'   => array(),
      'a'      => array(
                    'href'  => array(),
                    'title' => array()
                  ),
      'strong' => array(),
      'em'     => array(),
    );
    
    // sort($allowed); ?
    

    ?