Heim > Fragen und Antworten > Hauptteil
数组:
$array = [
0=>"z01",
1=>"Z32",
2=>"z17",
3=>"Z16",
];
需要排序后的结果
$rs_array = [
0=>"z01",
3=>"Z16",
2=>"z17",
1=>"Z32",
];
有什么好的排序写法呢?
某草草2017-05-16 13:02:16
asort($array, SORT_FLAG_CASE | SORT_NATURAL);
var_dump($array);
得到:
array:4 [
0 => "z01"
3 => "Z16"
2 => "z17"
1 => "Z32"
]
PHPz2017-05-16 13:02:16
可以使用用户自定的比较函数, usort。
$array = [
0=>"z01",
1=>"Z32",
2=>"z17",
3=>"Z16",
];
function cmp($a,$b){
$a = intval(substr($a, 1));
$b = intval(substr($b, 1));
if ($a == $b) {
return 0;
}
return ($a < $b ) ? -1 : 1;
}
usort($array, "cmp");
print_r($array);
/*
Array
(
[0] => z01
[1] => Z16
[2] => z17
[3] => Z32
)
*/
phpcn_u15822017-05-16 13:02:16
一个系统函数搞定
<?php
$array = [
0=>"z01",
1=>"Z32",
2=>"z17",
3=>"Z16",
];
natcasesort($array);
print_r($array);