首页 > 解决方案 > 带有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。如果有人需要更多信息,请告诉我。我感谢您的帮助。

标签: phpsortingmultidimensional-array

解决方案


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按相同的顺序排序。


推荐阅读