php - 带有array_column的PHP array_multisort不起作用
问题描述
我正在尝试按单列对多维数组进行排序。我有一个在方法中创建并作为 $GDdata 返回的数组。这是我在表格中显示的未排序数组的片段。在这里,我选择了我希望对最终数组进行排序的列:
$GDcol = array_column($GDdata,0);
我可以成功地将选定的列打印到屏幕上,如此处所示。然后,当我尝试使用所选列对整个多维数组进行排序时,如下所示:
$GDsorted = array_multisort($GDcol,SORT_ASC,$GDdata);
,当我使用排序后的数组 $GDsorted 时,打印出数组的表格不再显示。当我使用 php 5.6 时,这对我有用。现在我已经更新到 php 7.2(这就是首先创建 array_column 的原因)。我试过取出 SORT_ASC,因为它是默认的,我尝试将 array_column 和 array_multisort 组合成一个衬里,就像我在 php 5.6 中那样。我无法弄清楚为什么使用 array_multisort 后数组不会显示。我看过建议使用 usort 的帖子,但是如果可能的话,我想使用 array_multisort。如果有人需要更多信息,请告诉我。我感谢您的帮助。
解决方案
array_multisort ( array &$array1 , mixed $array1_sort_order = SORT_ASC , mixed $array1_sort_flags = SORT_REGULAR , mixed ...$rest ) : bool
成功时返回true ,失败时返回false。
&$array1
意味着它(和其他数组)通过引用传递并就地排序。所以使用它而不是返回:
array_multisort($GDcol, SORT_ASC, $GDdata);
print_r($GDdata);
而且您可以在一行中完成并且不需要SORT_ASC
:
array_multisort(array_column($GDdata, 0), $GDdata);
两者都会排序$GDcol
,然后$GDdata
按相同的顺序排序。
推荐阅读
- algorithm - 从连接线点找到三角形的最快方法
- javascript - 防止用户在 JS 计算器中输入多个小数点
- javascript - 与视频同步播放多个音轨之一
- c - 从 C 数组中正确获取随机位置
- perl - 无法使用 CPAN 安装 Net::SSLeay: /bin/sh: x86_64-apple-darwin13.4.0-clang: command not found
- assembly - 汇编 - 存储比较的结果(如果为真,则为 0,如果为假,则为 0)?
- c - 闰年C项目
- python - 简化处理文件结尾
- flutter - Dart - Snackbar 服务 - 全局函数 vs 静态类函数 vs 单例
- c# - JsonConvert.DeserializeObject
- > 如果 ApiResponse 少于 2 个 JSON 对象,则获取异常