用于测试的数组:
$toSort = array(2, 1, "img1", "img2", "img10", 1.5, "3.14", "2.72");
3.14&2.72
是字符串。SORT_REGULAR
标志(正常比较项目):Array
(
[0] => 2.72
[1] => 3.14
[2] => img1
[3] => img10
[4] => img2
[5] => 1
[6] => 1.5
[7] => 2
)
使用SORT_NUMERIC
标志(按数字比较项目,因此3.14
被排序为数字而不是字符串):
Array
(
[0] => img10
[1] => img1
[2] => img2
[3] => 1
[4] => 1.5
[5] => 2
[6] => 2.72
[7] => 3.14
)
使用 SORT_STRING
标志(SORT_LOCALE_STRING
类似,但取决于当前语言环境,所有值都被视为字符串):
Array
(
[0] => 1
[1] => 1.5
[2] => 2
[3] => 2.72
[4] => 3.14
[5] => img1
[6] => img10
[7] => img2
)
使用SORT_NATURAL
标志(注意img*
字符串的顺序,它是自然的):
Array
(
[0] => 1
[1] => 1.5
[2] => 2
[3] => 2.72
[4] => 3.14
[5] => img1
[6] => img2
[7] => img10
)
SORT_FLAG_CASE
可以与SORT_STRING
或SORT_NATURAL
一起使用,以进行不区分大小写的排序,例如:
// works like SORT_NATURAL but is case-insensitive
sort($toSort, SORT_NATURAL | SORT_FLAG_CASE);
assert('12' > '2' && '2' > '13 ' && '13 ' > '12');
循环,是的!因此,如果这两个值都看起来像数字,则进行数字比较。如果它们中的任何一个不是数字,则应用字符串比较。真的很糟糕 :) - donquixote