假设我有一个像
这样的简单表格名称|电子邮件
a | a@a.com
b | b@b.com
如果我这样做
$result = $db->fetchAll(PDO::FETCH_ASSOC)
例如,在SELECT *上,我得到像这样的东西
Array{
[0] => array{
['name'] => 'a'
['email'] => 'a@a.com'
}
[1] => array{
['name'] => 'b'
['email'] => 'b@b.com'
}
}
我想要像
这样的东西Array{
['name'] => Array{
[0] => 'a'
[1] => 'b'
}
['email'] => Array{
[0] => 'a@a.com'
[1] => 'b@b.com'
}
}
因此$ result ['name']是一个包含所有名称的数组。我知道我可以写一个非常小的功能来自己做。只是想知道是否有一些fetch_style参数可以自动执行。 谢谢!
答案 0 :(得分:2)
任何PDO标志都无法做到这一点 这里'我建议的转换脚本,它非常小:
$result = [];
foreach($array as $arr) foreach($arr as $k=>$v) $result[$k][] = $v;
print_r($result);
答案 1 :(得分:0)
有一种方法可以做到这一点。
您可以按照建议的here使用PDO::FETCH_GROUP
:
要返回按指定列的值分组的关联数组,请对PDO :: FETCH_COLUMN与PDO :: FETCH_GROUP进行按位或运算。
此标志将按您选择的第一列进行索引,您只需要将所需的索引字段移到位置0。