Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does asort work with multidimensional arrays?

Tags:

php

sorting

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.

like image 331
billyonecan Avatar asked Jul 12 '13 11:07

billyonecan


People also ask

What is Asort () function for?

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.

Why do we use multidimensional array?

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.

How does a multidimensional array work?

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];

Can C language handle multidimensional arrays?

In C programming, you can create an array of arrays. These arrays are known as multidimensional arrays.


1 Answers

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)
like image 127
Joni Avatar answered Sep 21 '22 22:09

Joni