5

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); ?

?

1

4 Answers 4

9

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 :)

Sign up to request clarification or add additional context in comments.

2 Comments

What parts? I'm not using keys, I'm just sorting the value.
firstly, what does 'is_array()' do?
4

ksort() ?

Comments

2

You use

ksort($allowed);

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

Comments

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.