【发布时间】:2018-08-01 06:55:50
【问题描述】:
我有一个数组,它是 SQL 查询的结果。当我print_r($results) 我得到
Array ( [0] => Array ( [Q1] => 24 ) ) Array ( [0] => Array ( [Q2] => 12 ) ) Array ( [0] => Array ( [Q3] => 14 ) ) Array ( [0] => Array ( [Q4] => 10 ) ) etc.
当我使用foreach ($result as $key=>$value) 循环在 HTML 中显示内容时,我得到了
-----------
|Q1 | 24|
|Q2 | 12|
|Q3 | 14|
|Q4 | 10|
-----------
但我想按值对数组进行排序,以便得到
-----------
|Q4 | 10|
|Q2 | 12|
|Q3 | 14|
|Q1 | 24|
-----------
第二列是计算的产物,而不是实际的 DB 列,所以我不能在 SQL 中使用ORDER BY。这是查询本身:
SELECT (SUM(Q".$i.")) AS Q$i FROM marks
我已经尝试过排序功能 - arsort($results) 和其他功能。我尝试重新分配给二维数组 - $final_result[] = $results; 和排序 - 但没有运气。
我在尝试访问 $results 中的实际值时是否遗漏了一些技巧? (24、12、14 等)
【问题讨论】:
-
试试
usort。虽然你的 php 版本应该是5.2+ -
您想按值排序并保留键关联,对吗?见php.net/manual/en/array.sorting.php,我认为是
asort -
你试过
asort()吗?它完全满足您的需求。 -
您可以在查询中使用
ORDER BY -
我试过 asort()。它不适用于此查询结果。我的代码是: $stmt = $db->prepare("SELECT (SUM(Q".$i.")) AS Q$i FROM tags"); $stmt->执行(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC);排序($结果); foreach ($results as $result) { 显示结果 }