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.
The asort() function sorts an associative array in ascending order, according to the value. Tip: Use the arsort() function to sort an associative array in descending order, according to the value. Tip: Use the ksort() function to sort an associative array in ascending order, according to the key.
Multi-dimensional arrays are an extended form of one-dimensional arrays and are frequently used to store data for mathematic computations, image processing, and record management.
A multi-dimensional array can be termed as an array of arrays that stores homogeneous data in tabular form. Data in multidimensional arrays are stored in row-major order. The general form of declaring N-dimensional arrays is: data_type array_name[size1][size2]....[sizeN];
In C programming, you can create an array of arrays. These arrays are known as multidimensional arrays.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With