PHP通过Sql生成带特定索引的数组

虽不明,但觉厉。

不明白原理,从别人代码中看到的,蛮好用,不过似乎性能不好:

SELECT id, sum(rmb) AS rmb, sum(device) AS device
FROM log_table
WHERE date>'2012-10-20'
GROUP BY id

这样一段Sql,用PHP自带的pdo这样请求:

$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE|PDO::FETCH_GROUP);

可以得到一个数组,使用sql中第一个字段也就是id为索引,每个元素为一个含两个属性(rmb, device)的对象。换成json写法大概是这样:

// 以前
[{id: 1, rmb: 1, device: 1}, {id: 2, rmb: 2, device:2}]

// 现在
{'1': {rmb: 1, device: 1}, '2': {rmb: 2, device: 2}}

这样再操作会方便很多。