Цель - вернуть массив из .php в формате JSON. Этот массив содержит другой массив данных (DB 49 строк, каждая из которых имеет 4 столбца), который берется форма MySql БД:Многомерный массив как ответ JSON
.php ниже:
$json = array(//this is AJAX response
"status" => null,
"username" => null,
"population" => null,
"food" => null,
"water" => null,
"map" => null //this to be an array of tiles
);
$sql = "SELECT * FROM players_map_test WHERE player_id = :value";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':value', $value, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
foreach ($result as $row) {
$json["map"]["tile_health"] = $row["tile_health"];
$json["map"]["tile_id"] = $row["tile_id"];
$json["map"]["tile_level"] = $row["tile_level"];
$json["map"]["tile_type"] = $row["tile_type"];
}
echo json_encode($json);
В моей обработчик ответа AJAX, я ожидал чтобы получить доступ к этому подматрицу как response.map и обрабатывать элементы обычным образом: response.map [0].
Когда я console.log (ответ) Я вижу, что карта присутствует там, но это не является массивом и содержит «1» в качестве значений для всех ключей:
map:Object
tile_health:"1"
tile_id:"1"
tile_level:"1"
tile_type:"1"
Что я делаю неправильно ?
'$ JSON [ "Карта"] [ "tile_health"] = $ строки [ "tile_health"];': Вы перезаписать свои значения в петля. – jeroen