2

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

我的代码是:

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

array_multisort($tmp, SORT_DESC, $returnArr);

我还想就如何构建单个查询并让我的一些 where 条件仅适用于单个列提出建议。如果这是可能的,那么我将能够使用 MySQL 而不是 PHP。

4

2 回答 2

0

没有您的查询很难回答,但我怀疑 multisort 是否是您想要的。它本质上也对您的列名进行排序,您可以在查询本身中轻松完成。您还可以让数据库为您排序值,因此您的查询将类似于:

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

这将返回排序的值,以及您指定它们的顺序的列。

于 2012-10-08T20:09:05.480 回答
0

如果array_multisort()是答案,那么问题是错误的。我还没有看到需要 array_multisort 的情况,PHP 数组是一种非常强大的数据结构,实际上不需要多排序。

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

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

于 2012-10-08T20:13:44.023 回答