在fetchAll page上有一条关于 php.org 的评论。
您可能会发现自己想要同时使用
FETCH_GROUP
并FETCH_ASSOC
获取表的主键作为数组键:
// $stmt is some query like "SELECT rowid, username, comment"
$results = $stmt->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
// It does work, but not as you might expect:
$results = array(
1234 => array(0 => array('username' => 'abc', 'comment' => '[...]')),
1235 => array(0 => array('username' => 'def', 'comment' => '[...]')), );
但是您至少可以轻松地去除无用的编号数组:
$results = array_map('reset', $results);
代码按预期运行,一切都只需一行即可完成:
array_map('reset', $results);
阅读文档 array_map 和 reset 函数后,我真的不明白当两者组合在一行中时结果是如何产生的。
这是一个安全的解决方案吗?你会推荐这种单行还是它是一种副作用并且不应该使用,即我应该编写一个普通的旧循环来产生相同的结果?
结合两个标准功能的单线解决方案对我来说是一个非常有吸引力的解决方案。我只是想确保没有意外。