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