繁体   English   中英

PDO按列名获取结果索引

[英]PDO get result index by column name

假设我有一个简单的表,例如

名称| 电子邮件
一个| 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参数可以自动执行此操作。 谢谢!

没有任何PDO标志可以做到这一点。
这是我建议的转换脚本,它非常小:

$result = [];
foreach($array as $arr) foreach($arr as $k=>$v) $result[$k][] = $v;

print_r($result);

有一种方法可以做到这一点。

您可以按照此处的建议使用PDO::FETCH_GROUP

要返回按指定列的值分组的关联数组,请对PDO :: FETCH_COLUMN与PDO :: FETCH_GROUP进行按位或运算。

该标志将按您选择的第一列进行索引,您只需要将所需的索引字段移到位置0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM