为什么asort适用于多维数组?

bil*_*can 5 php sorting

如果这是一个非常基本的问题,请道歉.我无意中发现它asort()似乎适用于多维数组:

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);
Run Code Online (Sandbox Code Playgroud)

产量

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)
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这有效吗?

我认为asort()只排序了平面数组,并且需要定义自定义排序函数来对多维数组进行排序.我在文档中找不到任何解释上述行为的内容.

Jon*_*oni 7

数组在字典顺序中按其值进行比较,因此第一个元素为"cat"的数组小于第一个元素为"zebra"的数组.这只是一个普通的单维排序,恰好可以将数组相互比较.

例如:

php > var_dump(array('a')< array('b'));
bool(true)
php > var_dump(array('a')> array('b'));
bool(false)
Run Code Online (Sandbox Code Playgroud)

  • 嗯,有什么参考吗? (3认同)
  • 找到它http://php.net/manual/en/language.operators.comparison.php - ctrl-f for"Transcription of standard array comparison" (2认同)