我从我的数据库中提取了一个较大的数据表(约 1500 行,每行有 10-15 个字段),我正在做一些过滤器并生成一些统计数据并将这些数据存储在 Excel 电子表格中供用户下载。
我不是一次又一次地用相同的相当复杂的查询来访问数据库,只做了很小的修改(对 WHERE 和 ORDER BY),而是一次访问数据库,将结果放入一个大数组中,然后使用array_filter
和array_multisort
获得我对数据的新看法。
我是新手,array_multisort
所以我会在这里发布我所做的事情以供批评。
// an numerical array of associative arrays
$records = $dbResult->convertToArray();
$fields = $dbResult->getFieldNames();
// this is run once at the start
$sortArr = array();
foreach ($fields as $field) $sortArr[$field] = array();
foreach ($records as $r) {
foreach ($r as $key => $value) {
$sortArr[$key][] = $value;
}
}
// and then to sort:
array_multisort(
$sortArr['Date Completed'], SORT_DESC,
$sortArr['Last Name'], SORT_ASC,
$sortArr['First Name'], SORT_ASC,
$sortArr['Course'], SORT_ASC,
$records
);
这很好用,尽管最初的“将整个结果复制到另一个数组中”对我来说似乎很奇怪。当我需要再次对列表进行排序时,就会出现问题。我有一种感觉,我$sortArr
需要与$records
数组保持同步,但每次排序后它都会被破坏。
我什至不确定这是 的预期用途array_multisort
,所以我可能在这里偏离轨道。任何人都可以提供一些建议或提示吗?如何对多维数组进行排序?