我正在尝试根据订单列对大型数组进行排序。构建数组的方式不允许我在查询中做很多事情来排序,但我想知道在PHP中是否存在比array_multisort()
更快的方法?
我的代码是:
foreach ($returnArr as $key => $row) {
$tmp[$key] = $row['orders'];
}
array_multisort($tmp, SORT_DESC, $returnArr);
我也在寻求关于如何构建单个查询的建议,并且我的某些条件仅适用于单个列。如果这是可能的,那么我只能用MySQL而不是PHP来做。
答案 0 :(得分:0)
如果没有您的疑问,很难回答,但我怀疑多重排序是否是您想要的。它基本上对您的列名称进行排序,您可以在查询本身轻松完成。您还可以让数据库为您排序值,因此您的查询将类似于:
select
Col_AAA, Col_BBB, Col_HHH, Col_ZZZ
from
YourTable
order by
Col_AAA, Col_BBB, Col_HHH, Col_ZZZ
这将返回已排序的值,以及您指定它们的顺序列。
答案 1 :(得分:0)
如果array_multisort()
是答案,那么问题就错了。我还没有看到一个需要array_multisort的情况,PHP数组是一个强大的数据结构,不需要多重分类。
为什么要从$returnArr
获取所有订单,然后将此数组与$ tmp一起排序?您应该以保持数组键的方式对$ tmp进行排序,如果要迭代这个$ tmp数组,foreach中的键也是相同的,也指向$ returnArr - 您可以访问匹配的数据在$ returnArr中设置而不必对其进行排序。 $ tmp和$ returnArr中的相同键将始终属于同一数据集。
另一方面,你没有说明你想做什么。