那麼, 有很多帖子和問題使用usort排序數組自定義模式,但沒有找到任何符合我的需要。 這裏是我到目前爲止的代碼,使用usort對給定序列上的數組進行排序?
$arrayToSort=array("Sabin","Anil","Cyrus","Kamal","Kesha","Bimal");
function mycmp($a, $b)
{
static $order = array('A', 'B','C',"Ke'",'Ka','R', 'S');
return array_search(substr($a,0,1), $order) - array_search(substr($b,0,1), $order);
}
usort($arrayToSort, "mycmp");
以上代碼在下列方式排序$ arrayToSort
Array
(
[0] => Anil
[1] => Bimal
[2] => Cyrus
[3] => Kamal
[4] => Kesha
[5] => Sabin
)
但是,如果你仔細看我的自定義模式static $order = array('A', 'B','C',"Ke'",'Ka','R', 'S');
克莎應該卡邁勒來之前在我的模式'柯'之前'嘉'
我再次知道substr($a,0,1)
只有第一個字符,這就是爲什麼它不工作。 我也懷疑我不得不採取另一種方法來完成工作,但我無法弄清楚。
如何排序數組模式的元素是否不一致,即某些元素有一個字符而其他元素有兩個?任何幫助將高度讚賞。由於
謝謝,這個工程完全按照我想要的。但我想知道的一件事是爲什麼使用類?,如果我們在函數cmp_proxy()中使用static $ order,而不是在類中定義它,它會產生什麼樣的區別? – WatsMyName 2012-08-10 14:27:37