«
PHP对特殊语句查询结果进行数组排序

时间:2008-5-31    作者:Deri    分类: 分享


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