Мне нужно получить ответ в формате 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)
);
Как правильно построить многомерный массив с результатом запроса?






Удалите 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
Вы можете использовать временный массив следующим образом:
$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);
А в чем именно проблема с кодом у вас?