我试图通过内部值的非标准排序来对数组进行排序,但是当其他值相等时,保留它们的顺序。所以我这样做:
$articles[0]['name']='Article 1';
$articles[0]['grouping']='';
$articles[1]['name']='Article 2';
$articles[1]['grouping']='Item group';
$articles[2]['name']='Article 3';
$articles[2]['grouping']='';
$articles[3]['name']='Article 4';
$articles[3]['grouping']='Item group';
$articles[4]['name']='Article 5';
$articles[4]['grouping']='';
function cmpBySort($a, $b) {
return strcmp($a["grouping"], $b["grouping"]);
}
usort($articles, 'cmpBySort');
foreach ($articles as $article){
echo $article['name'].' - '.$article['grouping'].'<br>';
}
哪种喜欢这样:
Article 5 -
Article 1 -
Article 3 -
Article 2 - Item group
Article 4 - Item group
但我想实现第 2 条 - 项目组 第 4 条 - 项目组 第 1 条 - 第 3 条 - 第 5 条 -
注意到我想要最后的空白,当等价时,然后按文章名称排序(所以 1,3,5 而不是 5,1,3)
希望有人是可以帮助解决这个问题的数组专家!谢谢!斯科特