可能重複:
How can I sort arrays in php by a custom alphabet?自定義排序數組中的PHP
例如,我有六個字:
香蕉,蘋果,愛,zasca,日本,汽車
有沒有一種方法按照字母順序排序,使用這個自定義順序:「j,c,z,l,a」?
可能重複:
How can I sort arrays in php by a custom alphabet?自定義排序數組中的PHP
例如,我有六個字:
香蕉,蘋果,愛,zasca,日本,汽車
有沒有一種方法按照字母順序排序,使用這個自定義順序:「j,c,z,l,a」?
下面是一些粗糙的代碼,讓你開始:
基本上,它看起來在每個單詞的數據數組中的第一個字母,將檢查其$sortOrder
數組中的位置。不在$sortOrder
中的字母按順序顯示在最後。
就在蝙蝠身上,如果$sortOrder
中有超過10萬個物品,這將會中斷。有可能還有其他漏洞,但我認爲這是usort()
如何工作的足夠體面的例子。
<?php
function getSortOrder($c) {
$sortOrder = array("j","c","z","l","a");
$pos = array_search($c, $sortOrder);
return $pos !== false ? $pos : 99999;
}
function mysort($a, $b) {
if(getSortOrder($a[0]) < getSortOrder($b[0])) {
return -1;
}elseif(getSortOrder($a[0]) == getSortOrder($b[0])) {
return 0;
}else {
return 1;
}
}
$data = array(
"banana",
"apple",
"love",
"zasca",
"japanese",
"car"
);
echo '<pre>' . print_r($data,true) . '</pre>';
usort($data, "mysort");
echo '<pre>' . print_r($data,true) . '</pre>';
?>
是退房this documentation on usort()
編輯:對不起,我給你鑰匙排序,但要比較值!
getSortOrder≅array_search? – 2011-08-17 17:30:07
是的,我只是更新它來使用array_search。 :) –