Why does asort work with multidimensional arrays?
php, sorting
Solution
Arrays are compared in the lexicographical order by their values, so an array where the first element is "cat" is less than an array where the first element is "zebra". This is just a normal single dimension sort that happens to compare arrays to each other.
For example:
php > var_dump(array('a')< array('b'));
bool(true)
php > var_dump(array('a')> array('b'));
bool(false)
Problem
Apologies if this is a really basic question. I've inadvertently discovered that `asort()` appears to work with multidimensional arrays: Sample PHP ``` $animals = array( 1 => array('name' => 'Zebra'), 2 => array('name' => 'Fox'), 3 => array('name' => 'Rabbit'), 4 => array('name' => 'Dog'), 5 => array('name' => 'Cat') ); asort($animals); var_dump($animals); ``` Output ``` array 5 => array 'name' => string 'Cat' (length=3) 4 => array 'name' => string 'Dog' (length=3) 2 => array 'name' => string 'Fox' (length=3) 3 => array 'name' => string 'Rabbit' (length=6) 1 => array 'name' => string 'Zebra' (length=5) ``` I'd like to know why this works? I thought `asort()` only sorted flat arrays, and to sort multidimensional arrays you needed to define a custom sort function. I can't find anything in the documentation that explains the above behaviour.