我在PHP中有一个从SQL查询创建的关联array.我一直只按一列排序,但现在我需要将代码更改为按两列排序.
这两列由一个浮点数和一个字符串组成:
$array["FinalValue"] = float
和
$array["Category"] = string
我现在使用它来按一个浮点型列(FinalMultiple)进行排序:
usort($categorylist, function($a, $b){
if((float) $b['FinalMulti'] == (float) $a['FinalMulti']) return 0;
return ((float) $b['FinalMulti'] < (float) $a['FinalMulti']) ? - 1 : 1;
});
我在网站上搜索了如何做到这一点,发现了一个按字符串和整数排序的示例,但没有完全按照我的顺序排序,也没有构建在我当前使用的代码上.
其他的例子使用了strcmp
,我把它插入了几个地方,但它不起作用.例如,我try 过:
usort($categorylist, function($a, $b){
if((float) $b['FinalMulti'] == (float) $a['FinalMulti']) {
return strcmp($b['CategoryName'], $a['CategoryName']);
}
return ((float) $b['FinalMulti'] < (float) $a['FinalMulti']) ? - 1 : 1;
});
我知道strcmp
比较字符串,所以我觉得应该有一个if
语句,但我不知道return
会是什么.虽然我很擅长编程,但我对usort
的理解并不是很强.
最后,["FinalMulti"]
需要从最高到最低的DESC排序,而["CategoryName"]
需要按字母顺序(A到Z)排序.所有["CategoryName"]
个字符串中的第一个字母都大写.
提前谢谢!