好吧,有很多帖子和问题使用 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)
只需要第一个字符,这就是它不起作用的原因。我也怀疑我必须采取另一种方法来完成工作,但我无法弄清楚。
如果数组模式的元素不一致,即有的元素有一个字符,而有的元素有两个,如何排序?任何帮助将不胜感激。谢谢