【问题标题】:Populate PHP Array with multiple Rows用多行填充 PHP 数组
【发布时间】:2017-12-24 01:44:54
【问题描述】:

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

【问题讨论】:

    标签: php arrays joomla joomla3.2


    【解决方案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) 返回一个关联数组,以“键”为索引,包含查询返回的名为“列”的列中的值

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-20
      • 2017-01-25
      • 1970-01-01
      • 2015-10-23
      • 2012-11-13
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多