@HAbRAhabp

Не выводится ключ из массива json_encode()?

Есть такой код:
<?php
$json = '{"1":250,"2":200,"3":100,"4":50,"5":30,"6":20,"7":10,"8":10,"9":10,"10":10}';
$encoded = (array) json_decode($json);
var_dump($encoded);
for ($i = 0; $i < 10; $i++)
{
    var_dump($encoded[$i]);
}

Но выводит он
array(10) {
  ["1"]=>
  int(250)
  ["2"]=>
  int(200)
  ["3"]=>
  int(100)
  ["4"]=>
  int(50)
  ["5"]=>
  int(30)
  ["6"]=>
  int(20)
  ["7"]=>
  int(10)
  ["8"]=>
  int(10)
  ["9"]=>
  int(10)
  ["10"]=>
  int(10)
}
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL

Нужен именно for, другие функции перебора не подходят. Почему так?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 2
@bears
в массиве нет индекса 0 а к нему идет обращение, сделайте так for ($i = 1; $i < 10; $i++)
Ответ написан
mahoho
@mahoho
Full stack certified PHP developer.
1. json_decode($json, true) вместо(array) json_decode($json), подробнее в документации.
2. Используйте foreach ($array as $key => $value).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы