PHP 中的 Array Sort (陣列排序)

唔~
今天把 BASS Project 的 News 功能生出來。
中間用到 Sort 的功能。

說起來,這東西有點死,要排序還挺辛苦的(苦笑

PHP 的陣列排序函式大概有兩種。
sort 和 ksort 這樣。
sort 就是一般排序,照 a-z 來排列。
而 ksort 則是以 key 來排序。

而把這些前面加上個 u 就變成「套用函式排序」
像是 usort 這樣。

不過,這都僅限一維陣列。
當二維陣列時怎麼辦呢?

usort 就能派上用場了……
(不過很可惜,他嵌套的函式不能指定 key, 必須固定)
也許該用 usort 的 Object 方法吧……

而傳回值分三種:
-1, 0, 1 三個……
1 就是往前排放,而-1就是往後,那麼0就是不動。
(某弦是這樣記拉……)

像是依照時間排列時,這個就很方便。

不過說真的,陣列排序在檔案類處理比較常見。
(畢竟資料庫可以用 ORDER BY time DESC 來直接處理)

套用方法不難:

<?php
function cmp_desc($a, $b){
  if($a == $b) return 0;
  return ($a > $b) ? 1 : -1;
}

$array = array(3,5,9,6,10,12);  

usort($array, "cmp_desc"); //逆序排列
?>

上面結果會把陣列重新排成:12,10,9,6,5,3

算是簡單,這樣我也稍微搞懂排序了 XD

3 thoughts on “PHP 中的 Array Sort (陣列排序)