数组:
$array = [ 0=>"z01", 1=>"Z32", 2=>"z17", 3=>"Z16", ];
需要排序后的结果
$rs_array = [ 0=>"z01", 3=>"Z16", 2=>"z17", 1=>"Z32", ];
有什么好的排序写法呢?
asort($array, SORT_FLAG_CASE | SORT_NATURAL); var_dump($array);
得到:
array:4 [ 0 => "z01" 3 => "Z16" 2 => "z17" 1 => "Z32" ]
可以使用用户自定的比较函数, 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 ) */
一个系统函数搞定
<?php $array = [ 0=>"z01", 1=>"Z32", 2=>"z17", 3=>"Z16", ]; natcasesort($array); print_r($array);
有个数组函数,直接比对value的
array_sort(array_values($rs_array))
得到:
可以使用用户自定的比较函数, usort。
一个系统函数搞定
有个数组函数,直接比对value的
array_sort(array_values($rs_array))