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