如何解决有没有一种方法可以使用PDO提取按指定列的值分组的关联数组?
->fetchAll(\PDO::FETCH_GROUP|\PDO::FETCH_UNIQUE)
第一个列将被设置为键,其余将被设置为值。
解决方法
例如,让我们使用一些简单的数据集
+---------+------+------+------------+
| name | age | sex | position |
+---------+------+------+------------+
| Antony | 34 | M | programmer |
| Sally | 30 | F | manager |
| Matthew | 28 | M | designer |
+---------+------+------+------------+
我们想要得到的是这样组织的数组
Array
(
[Antony] => Array
(
[age] => 34
[sex] => M
[position] => programmer
)
[Sally] => Array
(
[age] => 30
[sex] => F
[position] => manager
)
[Matthew] => Array
(
[age] => 28
[sex] => M
[position] => designer
)
)
作为粗略的近似,我们可以使用
$pdo->query('SELECT * FROM employee')->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
但是结果是我们有不必要的嵌套级别
Array
(
[Antony] => Array
(
[0] => Array
(
[age] => 34
[sex] => M
[position] => programmer
)
)
[Sally] => Array
(
[0] => Array
(
[age] => 30
[sex] => F
[position] => manager
)
)
[Matthew] => Array
(
[0] => Array
(
[age] => 28
[sex] => M
[position] => designer
)
)
)
我试图通过使用回调函数摆脱这种不必要的嵌套级别
$stmt->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC|PDO::FETCH_FUNC,'current');
但是由于某些原因它没有通过
Array
(
[0] => Array
(
[age] => 34
[sex] => M
[position] => programmer
)
)
但是只是一堆标量34,'M','programmer'
来回调函数:(
您可以使用回调等功能查看它
function what_do_you_pass_me() {
$numargs = func_num_args();
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "\n";
};
echo "\n\n";
};
那么有没有一种方法可以在PDO::FETCH_*
不array_map('current',$result)
获取结果后使用模式的情况下获得所需的结果集?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。