提问人:Kompalisky87 提问时间:2/17/2023 最后编辑:Kompalisky87 更新时间:2/17/2023 访问量:57
按数字排序关联 PHP 数组,然后按字符串排序
Sort Associative PHP Array By Number Then By String
问:
我在 PHP 中有一个关联数组,它是从 SQL 查询创建的。我一直只按一列排序,但现在我需要更改代码以按两列排序。
这两列由 FLOAT 和 STRING 组成: 和$array["FinalValue"] = float
$array["Category"] = string
我现在使用它来按一列(FinalMulti)进行排序,该列是一个浮点数:
usort($categorylist, function($a, $b){
if((float) $b['FinalMulti'] == (float) $a['FinalMulti']) return 0;
return ((float) $b['FinalMulti'] < (float) $a['FinalMulti']) ? - 1 : 1;
});
我已经在网站上搜索了如何做到这一点,并找到了一个按 STRING 排序然后按整数排序的示例,但没有完全按照我的顺序排序,也没有任何东西建立在我当前使用的代码之上。
使用的其他示例,我将其插入了很少的地方,但它不起作用。例如,我尝试:strcmp
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
最后,需要从高到低对DESC进行排序,同时需要按字母顺序(A到Z)进行排序。所有字符串中的第一个字母都大写。["FinalMulti"]
["CategoryName"]
["CategoryName"]
提前致谢!
答:
1赞
fusion3k
2/17/2023
#1
您可以将array_multisort
与以下array_column
一起使用:
array_multisort(
array_column($categorylist, 'FinalMulti'), SORT_DESC,
array_column($categorylist, 'CategoryName'), SORT_ASC,
$categorylist
);
评论