【问题标题】:Create a Multidimensional Array and json_encode创建多维数组和 json_encode
【发布时间】:2018-04-05 12:49:10
【问题描述】:

我必须从数据库中获取 JSON 响应:

id 和 last_active:

$users = array();

$stmt = $mysqli->query('SELECT id, last_active FROM users WHERE status = 1');
while ($row = $stmt->fetch_assoc()) {
    $users[]['id'] = $row['id'];
    $users[]['last_active'] = $row['last_active'];
}

echo json_encode($users);

数组必须如下:

$users = array (
  0 => array(1, 1522921015),
  1 => array(2, 1522921019),
  2 => array(3, 1522921102),
  3 => array(4, 1522921195),
  4 => array(5, 1522921034)
);

如何用查询结果正确构建多维数组?

【问题讨论】:

  • 你的代码到底有什么问题?

标签: php arrays multidimensional-array mysqli


【解决方案1】:

试试这个代码

  $users = array();

  $stmt = $mysqli->query('SELECT id, last_active FROM users WHERE status = 1');
  $i=0;
  while ($row = $stmt->fetch_assoc()) {
    $users[$i]['id'] = $row['id'];
    $users[$i]['last_active'] = $row['last_active'];
    $i++;
  }

    echo json_encode($users);

【讨论】:

  • 这将给出与 OP 当前代码相同的结果
【解决方案2】:

你可以像这样使用临时数组:

$users = array();

$stmt = $mysqli->query('SELECT id, last_active FROM users WHERE status = 1');
while ($row = $stmt->fetch_assoc()) {
    $tempArray = []; // added
    $tempArray[] = $row['id'];
    $tempArray[] = $row['last_active'];
    $users[] = $tempArray; // added
}

echo json_encode($users);

或直接分配两个值:

$users[] = array($row['id'],$row['last_active']);

【讨论】:

    【解决方案3】:

    删除 json_encode 只是打印 $user

    【讨论】:

      【解决方案4】:

      你应该推送一个没有键的数组来获取预期的数据:

      $users = array();
      $stmt = $mysqli->query('SELECT id, last_active FROM users WHERE status = 1');
      while ($row = $stmt->fetch_assoc()) {
          $users[] = [ $row['id'], $row['last_active'] ];
      }
      

      所以,$users 将等于:

      $users = array (
        0 => array(1, 1522921015),
        1 => array(2, 1522921019),
        2 => array(3, 1522921102),
        3 => array(4, 1522921195),
        4 => array(5, 1522921034)
      );
      

      或者,将MYSQLI_NUM 选项与fetch_array() 一起使用:

      while ($row = $stmt->fetch_array(MYSQLI_NUM)) {
          $users[] = $row;
      }
      

      【讨论】:

        【解决方案5】:

        我的选择是这样的:

        $users = array();
        
        $stmt = $mysqli->query('SELECT id, last_active FROM users WHERE status = 1');
        while ($row = $stmt->fetch_assoc()) {
              $users[] = [
                  $row['id'],
                  $row['last_active'],
             ];
        }
        
        echo json_encode($users);
        

        【讨论】:

          猜你喜欢
          • 2015-04-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-19
          • 2013-04-21
          相关资源
          最近更新 更多