php - Sort Array by Number and Boolean
问题描述
I have an array, every item has a number from 1-10, and every item has boolean value.
I want to sort it, so every item with boolean is in the first part of the array, but it should also be sort by number
Example. This is simplified the initial Array
Item1: Number 3, Boolean false
Item2: Number 8, Boolean true
Item3: Number 4, Boolean false
Item4: Number 2, Boolean true
This Array Should look like this
Item2: Number 8, Boolean true
Item4: Number 2, Boolean true
Item3: Number 4, Boolean false
Item1: Number 3, Boolean false
I already got this function
$refarr = array_sort($refarr, 'refweights', SORT_DESC);
which sort the Array like this
Item2: Number 8, Boolean true
Item3: Number 4, Boolean false
Item1: Number 3, Boolean false
Item3: Number 2, Boolean true
Is there any other way to archive what i than to split the initial Array into two Arrays (Boolean True and false), sort this by number, and bring them back together?
解决方案
与自定义排序一起使用usort
...
<?php
$arr = array(
array(2, false),
array(2, true),
array(3, false),
array(8, true),
array(4, false),
);
usort($arr, function ($a, $b){
if ($a[0] === $b[0]) {
return 0;
}
return ($a[0] < $b[0]) ? 1 : -1;
});
usort($arr, function ($a, $b){
if ($a[1] === $b[1]) {
return 0;
}
return ($a[1] < $b[1]) ? 1 : -1;
});
print_r($arr);
输出:
Array
(
[0] => Array
(
[0] => 8
[1] => 1
)
[1] => Array
(
[0] => 2
[1] => 1
)
[2] => Array
(
[0] => 4
[1] =>
)
[3] => Array
(
[0] => 3
[1] =>
)
[4] => Array
(
[0] => 2
[1] =>
)
)
推荐阅读
- firebase - Flutter 中的慢速 Firestore 查询
- python - flake8 没有在用户目录中获取全局配置文件
- c# - geeting HTTP Post BAD 请求将 CURL 代码转换为 C# HTTP POST
- flutter - Flutter Web 录制音频以流式传输
- python - 如何在不修改 AST 的情况下动态更改函数的签名?
- python - 替换单词的功能
- c# - 按住开火按钮时,以一定间隔连续发射子弹
- flutter - 如何通过 TCX 格式的文件将皮划艇或划船数据上传到 Strava?
- excel - 从最新文件导出数据的问题
- python - 如何在 pyqt5 webbrowser 中为 youtube 视频创建全屏模式