Я уже рассматриваю много вопросов в stackoverflow о моей проблеме, но я не нашел никакого решения. Я не знаю, где проблема в моем коде? Я получил недопустимое сообщение смещения строки в этой строке:
echo $value["country"] . ", " . $value["competition"] . "<br>";
Мой полный код:
<?php
// file_get_contents call instead
$str = file_get_contents('general.json');
$json = json_decode($str,true);
foreach($json as $key => $value){
echo $value["country"] . ", " . $value["competition"] . "<br>";
}
?>
мой исходный образец json:
["{\"country\":\"America\",\"competition\":\"Copa America\",\"club\":\"BOCA JUNIORS\"}","{\"country\":\"Germany\",\"competition\":\"Bundesliga\",\"club\":\"HANNOVER\"}","{\"country\":\"Asia\",\"competition\":\"JLeague\",\"club\":\"NAGOYA\"}"]
Если я просматриваю формат данных с помощью var_dump ($ json), то вижу, что это массив. С var_dump ($ value) я вижу, что есть строка. Пожалуйста, помогите мне, где проблема в моем коде, почему не удалось повторить оценку стоимости страны и стоимости?
Проблема в том, что у вас есть json, который был закодирован дважды, как массив, так и элементы в массиве.
Вам следует избегать этого, но если вы не можете изменить источник, вам также необходимо декодировать значения:
<?php
// file_get_contents call instead
$str = file_get_contents('general.json');
$json = json_decode($str,true);
foreach($json as $key => $value){
// decode the $value string
$value = json_decode($value, true);
echo $value["country"] . ", " . $value["competition"] . "<br>";
}
?>