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