2011-08-17 97 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。 :) –