php对特殊语句查询结果进行数组排序 |
数据库 查问 后果有时候不能直接 使用, 比方mysql等用in语句出来的 后果, 因此需求对 后果进行某种 模式的排序 。 例子 4. 对数据库 后果进行排序 本例中 data 数组中的每个单元 示意一个表中的一行 。这是典型的数据库记录的数据 集中 。 例子中的数据如下: volume | edition -------+-------- 67 | 2 86 | 1 85 | 6 98 | 2 86 | 6 67 | 7 数据全都 存放在名为 data 的数组中 。这通常是通过循环从数据库 获得的 后果,例如 mysql_fetch_assoc() 。 $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); ?> 本例中将把 volume 降序罗列,把 edition 升序罗列 。 现在有了包括有行的数组,然而 array_multisort() 需求一个包括列的数组, 因此用以下代码来 获得列, 而后排序 。 // 获得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } // 将数据依据 volume 降序罗列,依据 edition 升序罗列 // 把 $data 作为最终一个参数,以通用键排序 array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); ?> 数据 集中现在排好序了, 后果如下: volume | edition -------+-------- 98 | 2 86 | 1 86 | 6 85 | 6 67 | 2 67 | 7 |