使用多行填充PHP数组

时间:2017-07-19 01:20:51

标签: php arrays joomla joomla3.2

我在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]);

1 个答案:

答案 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');