如果这是一个非常基本的问题,请道歉.我无意中发现它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()只排序了平面数组,并且需要定义自定义排序函数来对多维数组进行排序.我在文档中找不到任何解释上述行为的内容.
数组在字典顺序中按其值进行比较,因此第一个元素为"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)