Создайте многомерный массив и json_encode

Мне нужно получить ответ в формате 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)
);

Как правильно построить многомерный массив с результатом запроса?

А в чем именно проблема с кодом у вас?

Patrick Q 05.04.2018 14:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
54
5

Ответы 5

Удалите json_encode, просто напечатайте $ user

Попробуйте этот код

  $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

Patrick Q 05.04.2018 14:58

Вы можете использовать временный массив следующим образом:

$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']);

Вы должны нажать массив без ключей, чтобы получить ожидаемые данные:

$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;
}

мой выбор будет таким:

$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);

Другие вопросы по теме