我有一个数组,它将多个数据库表合并到一个所需信息的数组中。我想按名称按字母顺序对这些信息进行排序,如果名称相同,则按id排序。
我查看了以下所有主题,但未能产生效果。
MY ARRAY as sudo dump
$payload['output'] = 'Vulnerabilities found : ' . $vulnerabilites;
代码尝试
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"
},
}
MY INTENDEND DUMP
// 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;
});
奖金 如果您能够解释它是如何工作的以及它对阵列进行排序的方式,让我更好地理解这将是非常棒的功能!
答案 0 :(得分:1)
您可以像{/ p>一样使用usort
usort($arr,function($a,$b){
$c = strcasecmp($a['name'], $b['name']);
$c .= $a['id'] - $b['id'];
return $c;
});
print_r($arr);