我使用名为subval_sort
的函数对多维数组进行排序。
function subval_sort($a,$subkey) {
foreach($a as $k=>$v) {
$b[$k] = strtolower($v[$subkey]);
}
asort($b);
foreach($b as $key=>$val) {
$c[] = $a[$key];
}
return $c;
}
$songs = array(
'1' => array('artist'=>'Bing Crosby', 'songname'=>'White Christmas'),
'2' => array('artist'=>'Elvis Presley', 'songname'=>'White Christmas'),
'3' => array('artist'=>'Abba', 'songname' =>'Waterloo')
);
$songs = subval_sort($songs,'songname');
print_r($songs);
工作正常。现在我想按歌曲名称排序第一,艺术家排序第二。所以:如果两个(或更多)的songname-values相同,我想按艺术家排序。就像在SQL中一样:ORDER BY songname,artist。
你有任何想法如何解决它?
答案 0 :(得分:1)
您可以使用usort来定义自定义比较功能
function cmp($a, $b)
{
if(strcmp($a['songname'], $b['songname'])) {
return strcmp($a['songname'], $b['songname']);
}
return strcmp($a["artist"], $b["artist"]);
}
实现:
usort($songs, "cmp");