【问题标题】:add array element to row returned from sql query将数组元素添加到从 sql 查询返回的行
【发布时间】:2023-03-10 13:02:01
【问题描述】:

我想在将一个附加值传递给 json_encode 函数之前将其添加到数组中, 但我无法正确使用语法。

 $result = db_query($query);

  // $row is a database query result resource
  while ($row = db_fetch_object($result)) {

  $stack[]  = $row; 
                // I am trying to 'inject' array element here
  $stack[]['x']  = "test";  
 }

echo json_encode($stack); 

【问题讨论】:

    标签: php mysql drupal arrays


    【解决方案1】:

    如果是数组可以直接加值:

    $row['x'] = 'test';
    $stack[] = $row;
    

    如果它是一个对象,你可以添加另一个属性:

    $row->x = 'test';
    $stack[] = $row;
    

    如果你想保持对象和额外的值分开:

    $data = array($row, 'x' => 'test');
    $stack[] = $data;
    

    【讨论】:

    • 那是我的第一个倾向,但它给出了“不能使用 stdClass 类型的对象作为数组 in” 在 mySQL 中,返回的值将是对应于获取行的字符串关联数组。在 Drupal 的数据库抽象层中,返回的值是一个“数据库查询结果资源”。
    • 现在就开始吧。我正在使用第二个选项。
    【解决方案2】:

    但这确实有效。

    $stack[]  = $row;       
    $row->x = 'test';
    

    【讨论】:

      【解决方案3】:

      怎么样:

      $row['x'] = 'test';
      $stack = $row;
      

      【讨论】:

        猜你喜欢
        • 2012-02-22
        • 2017-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        相关资源
        最近更新 更多