【发布时间】:2012-08-10 11:04:50
【问题描述】:
嗯, 有很多帖子和问题使用 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'); Kesha 应该排在 Kamal 之前,因为在我的模式中,“Ke”排在“Ka”之前
我再次知道substr($a,0,1) 仅使用第一个字符,这就是它不起作用的原因。
我也怀疑我必须采取另一种方法来完成工作,但我无法弄清楚。
如果数组模式的元素不一致,即有的元素有一个字符而有的元素有两个,如何排序?任何帮助将不胜感激。谢谢
【问题讨论】: