Heim > Fragen und Antworten > Hauptteil
天蓬老师2017-04-11 10:30:54
PHP用数组保存SQL查询的结果集不很正常么?怎么会说不能用数组呢?
PDO fetchAll返回的本来就是一个数组:$db->query('SELECT * FROM posts')->fetchAll(PDO::FETCH_ASSOC);
PHP数组操作很灵活,可以干很多事,甚至是SQL里面的事,比如排序和分组:
<?php
//奥运奖牌榜,依次按金牌,银牌,铜牌的数目进行降序排序.
header('Content-Type: text/plain; charset=utf-8');
$arr = array(
'中国' => array(
'金牌' => 8,
'银牌' => 3,
'铜牌' => 6,
),
'俄罗斯' => array(
'金牌' => 3,
'银牌' => 6,
'铜牌' => 3,
),
'美国' => array(
'金牌' => 6,
'银牌' => 8,
'铜牌' => 8,
),
'澳大利亚' => array(
'金牌' => 4,
'银牌' => 0,
'铜牌' => 4,
),
'意大利' => array(
'金牌' => 3,
'银牌' => 4,
'铜牌' => 2,
),
);
// 实现 ORDER BY
foreach($arr as $k => $v) {
$sort['金牌'][$k] = $v['金牌'];
$sort['银牌'][$k] = $v['银牌'];
$sort['铜牌'][$k] = $v['铜牌'];
}
array_multisort(
$sort['金牌'], SORT_DESC,
$sort['银牌'], SORT_DESC,
$sort['铜牌'], SORT_DESC,
$arr);
var_export($arr);
// 实现 GROUP BY (看看'金牌'字段都有哪些值)
$tmp = array();
foreach($arr as $k => $v) {
if(in_array($v['金牌'], $tmp) === FALSE) {
$tmp[] = $v['金牌'];
}
}
var_export($tmp);