数组排序速度比array_multisort快



我正在尝试根据订单列对大型数组进行排序。数组的构建方式不允许我在查询中做太多排序,但我想知道是否有一种方法比 PHP 中的array_multisort()更快?

我的代码是:

foreach ($returnArr as $key => $row) {
    $tmp[$key] = $row['orders'];
}
array_multisort($tmp, SORT_DESC, $returnArr);

我还准备就如何构建单个查询以及如何将我的一些 where 条件仅适用于单个列提出建议。如果这是可能的,那么我将能够用MySQL而不是PHP来做到这一点。

没有您的查询很难回答,但我怀疑多排序是否是您想要的。它本质上也对您的列名进行排序,您可以在查询本身中轻松执行此操作。您还可以让数据库为您对值进行排序,以便您的查询如下所示:

select
  Col_AAA, Col_BBB, Col_HHH, Col_ZZZ
from
  YourTable
order by
  Col_AAA, Col_BBB, Col_HHH, Col_ZZZ

这将返回排序的值,并按您指定的顺序返回列。

如果array_multisort()是答案,那么这个问题是错误的。我还没有看到需要array_multisort的情况,PHP 数组是一种如此强大的数据结构,以至于多重排序并不是真正必要的。

为什么要从$returnArr获取所有订单,然后将此数组与$tmp一起排序?您应该简单地以保留数组键的方式对$tmp进行排序,如果要迭代此$tmp数组,foreach 中的键与也指向$returnArr的键相同 - 您可以访问$returnArr中的匹配数据集,而无需对其进行排序。$tmp 和 $returnArr 中的相同键将始终属于同一数据集。

另一方面,你没有说明你想做什么。

最新更新