如果想在需求分析:讓搜索出結果中將相關度高(關鍵字所占比例大的結果排在前面)。比如你搜索“紅”這個關鍵字,那麼《紅》這部動漫在結果中的排序就要大於《小紅帽》,因為它的關鍵字比率大。於是就產生了一個特殊的需求,給出一個php的數組,內容都是字符串,需要按照字符串的長短重新進行一次排序。php提供的數組函數只能按照英文順序這樣的排序,於是google一下,發現了解決方案,就是使用PHP的自定義排序函數usort。
- bool usort ( array & $array ,
callback $cmp_function )
其實PHP數組按字符串長短排序的方法就像以前計算機課程學習的冒泡排序法,它接受兩個參數,第一個是要排序的數組,第二個是回調函數,就是排序的條件。usort相當於一個遞歸,根據條件的返回值來判斷是否將兩個鄰近的數組(如$a,$b)進行對調,達到了排序的目的。如果根據冒泡排序法,這個條件就是$a>$b這樣的。那麼如果是要根據字符串長短,那麼就是strlen($a)-$strlen($b)這樣的格式了。自己寫callback函數,可以完成各種各樣詭異的排序來。那麼,CoCo現在的代碼就可以這樣寫了:
- $aS = array('aaa', 'aa', 'aaaa', 'aaaaa');
- $F = create_function('$a, $b',
'return(strLen($a) > strLen($b))');- usort($aS, $F);
希望通過以上介紹的PHP數組按字符串長短排序的實現方法,大家能夠充分掌握這一技巧。