获取 assoc
对于手册:
http: //php.net/manual/en/pdostatement.fetchall.php
fetch_style
控制返回数组的内容,如 PDOStatement::fetch() 中所述。默认为 PDO::ATTR_DEFAULT_FETCH_MODE 的值(默认为 PDO::FETCH_BOTH)
要返回由结果集中单个列的所有值组成的数组,请指定 PDO::FETCH_COLUMN。您可以使用 column-index 参数指定所需的列。
要从结果集中仅获取单个列的唯一值,请按位或 PDO::FETCH_COLUMN 与 PDO::FETCH_UNIQUE。
要返回按指定列的值分组的关联数组,请按位或 PDO::FETCH_COLUMN 与 PDO::FETCH_GROUP。
最后一点是关键。它似乎没有完全记录(我可以找到),但是您可以将 PDO::FETCH_ASSOC 与 PDO::FETCH_GROUP 结合起来,而不是 PDO::FETCH_COLUMN,以实现所需的结果:
$PDOstmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)
因此,鉴于上述数据:
$stmt = $PDO_obj->prepare('select * from brands');
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
d($result);
结果是:
array (6) [
'1' => array (1) [
array (2) [
'name' => string (10) "Solidfloor"
'url' => string (10) "solidfloor"
]
]
'2' => array (1) [
array (2) [
'name' => string (9) "Quickstep"
'url' => string (9) "quickstep"
]
]
'4' => array (1) [
array (2) [
'name' => string (10) "Cleanfloor"
'url' => string (10) "cleanfloor"
]
]
'5' => array (1) [
array (2) [
'name' => string (12) "Blue Dolphin"
'url' => string (12) "blue-dolphin"
]
]
'6' => array (1) [
array (2) [
'name' => string (5) "Krono"
'url' => string (5) "krono"
]
]
'8' => array (1) [
array (2) [
'name' => string (7) "Meister"
'url' => string (7) "meister"
]
]
]
( d() 只是 kint 库中一个方便的调试函数,如 var_dump() 或 print_r() )
请注意,用于索引数组的列将始终是结果中的第一列,因此您可以修改您的 select 语句以选择您想要的列。还要注意,索引列将从每一行的数组中删除;为了解决这个问题,您可以将该列两次添加到您的选择语句中(即select id, brands.* from brands
,等)。
此处记录了更多参数:http ://php.net/manual/en/pdostatement.fetch.php,例如 PDO::FETCH_UNIQUE 以确保每个索引仅使用一次。