1
我有一个数组是多个数据库表合并在一起成为所需信息的数组。我想按名称按字母顺序排列这些信息,如果它是同一个名字,则按id排序。排序多维数组(了解Usort和MultiSort)
我查看了以下所有主题,但无法产生工作结果。
- Sort a multi-dimensional Array in PHP
- sorting a multi-dimensional array
- Sort a multi-dimensional Array in PHP
- http://php.net/manual/en/function.usort.php
我作为sudo的ARRAY倾倒
array(3){
[0] => array(3){
['id'] => "1",
['name'] => "Slippery Sasha",
['type'] => "Electric Eel"
},
[1] => array(3){
['id'] => "2",
['name'] => "Viscious Vipers",
['type'] => "Snake"
},
[2] => array(3){
['id'] => "3",
['name'] => "Finnic Fox",
['type'] => "Rabid Fox"
},
}
代码尝试
// Sort
$sortByTypes = array('name', 'id', 'type');
usort($returnArray, function($a, $b) use($sortByTypes){
foreach($sortByTypes as $field){
$sort = strnatcasecmp($a[$field], $a[$field]);
if($sort !== 0){
break;
}
}
return $sort;
});
MY INTENDED DUMP
array(3){
[0] => array(3){
['id'] => "3",
['name'] => "Finnic Fox",
['type'] => "Rabid Fox"
},
[1] => array(3){
['id'] => "1",
['name'] => "Slippery Sasha",
['type'] => "Electric Eel"
},
[2] => array(3){
['id'] => "2",
['name'] => "Viscious Vipers",
['type'] => "Snake"
},
}
BONUS 如果你能解释一下它是如何工作以及它是做给数组给我更好的理解排序这个功能太棒了!
这仍然表明该阵列由id来,而不是由名称排序。 –
您的预期产出是多少?而且我认为它的工作原来是预期的 –
我更新了我的问题以回答预期的结果。但基本上abc按数组中的名称列排序。但是,如果名称与其他名称相同,则按ID排序。 –