那么, 有很多帖子和问题使用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