數組:
$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))