我在php中运行SQL查询并返回结果
Name
Joe
Jack
Jerri
Jerry
我需要将它解析成一个php数组,不幸的是,我过去用来添加到php数组的方法不再相关,因为我返回了多行。我如何改变这种语法,以便考虑一个有多行的列来填充我的php数组?
$rows = $db->loadRowList();
$output = array();
foreach ($rows as $row) { array_push($output, $row); }
$data = json_encode($output[0]);
答案 0 :(得分:1)
TL; DR:使用loadAssocList('id', 'name')
loadRowList()
从查询返回的表记录中返回索引数组的索引数组
因此,我假设$rows
数组看起来像这样:
Array
(
[0] => Array
(
[0] => Joe
)
[1] => Array
(
[0] => Jack
)
[2] => Array
(
[0] => Jerri
)
[3] => Array
(
[0] => Jerry
)
)
您可以使用PHP的array_column()
从每个子数组中获取单个索引值:
$rows = $db->loadRowList();
$output = array_column($rows, 0);
$output
现在应该包含一个类似于:
Array
(
[0] => Joe
[1] => Jack
[2] => Jerri
[3] => Jerry
)
我们可以在这里进行的改进是维护一个关联数组,将数据库的列名映射到它们的值。 loadAssocList()
可以提供帮助。
$rows = $db->loadAssocList();
$output = array_column($rows, 'name');
请注意,我们现在使用"name"
索引而不是0
。
利用loadAssocList()
:
loadAssocList($key, $column)
会返回一个关联数组,该关联数组会在名为'列'列的值的“' key'”上编入索引。由查询返回
使用此方法,我们可以以ID => Name
键值格式接收单个数组:
$ouput = $db->loadAssocList('id', 'name');