【发布时间】:2011-12-21 20:55:45
【问题描述】:
我需要对一些不是来自数据库但结构类似于 sql 结果集的数据进行排序。
在 MySQL 中,我会编写如下查询来按两列对数据进行排序:
SELECT product, qty FROM stock ORDER BY qty DESC, LENGTH(product) DESC
但是,在这种情况下,我需要使用 php.ini 执行此排序逻辑。具体来说,行首先按qty降序排序,然后按name的长度降序排序。
未排序的输入:
[
['name' => 'foo bar', 'qty' => 6],
['name' => 'foo bar bar foo', 'qty' => 10],
['name' => 'b', 'qty' => 5],
['name' => 'foo', 'qty' => 10],
['name' => 'bar', 'qty' => 6],
['name' => 'foo bar bar bar foo', 'qty' => 6],
]
排序后,我需要使用name 值作为键和qty 值作为平面关联数组的值来重构数据
完成的数组看起来像这样:
期望的输出:
[
'foo bar bar foo' => 10,
'foo' => 10,
'foo bar bar bar foo' => 6,
'foo bar' => 6,
'bar' => 6,
'b' => 5
]
【问题讨论】:
-
另外,你想用 PHP 做这件事有什么特别的原因吗?
-
@Ascherer:数据不存在于 MySQL 中,我想避免将其全部放在那里的传输时间。我的 SELECT 语句只是一个例子。
-
啊,k。这是有道理的
标签: php sorting multidimensional-array