2011-08-17 75 views

回答

7

下面是一些粗糙的代碼,讓你開始:

基本上,它看起來在每個單詞的數據數組中的第一個字母,將檢查其$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>'; 
?> 
+0

getSortOrder≅array_search? – 2011-08-17 17:30:07

+1

是的,我只是更新它來使用array_search。 :) –