用多行填充 PHP 数组

Populate PHP Array with multiple Rows

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

TL;DR:使用 loadAssocList('id', 'name')


loadRowList() returns an indexed array of indexed arrays from the table records returned by the query

因此,我假设 $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) returns an associative array, indexed on 'key', of values from the column named 'column' returned by the query

使用此方法,我们可以接收ID => Name键值格式的单个数组:

$ouput = $db->loadAssocList('id', 'name');