У меня возникает ошибка, когда я хочу проанализировать свой массив json на объект php, используя цикл foreach.
это моя ошибка:
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\testJSON\crul_json.php on line 49
и тогда это мой код
<?php
function http_request($url){
// persiapkan curl
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
// set user agent
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
// return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// tutup curl
curl_close($ch);
// mengembalikan hasil curl
return $output;
}
$profile = http_request("http://localhost/testWebService/");
//json_output(400, $profile);
$json_format = json_encode($profile);
//echo $json_format;
// ubah string JSON menjadi array
$hasil = json_decode($json_format, TRUE);
$hdcode = var_dump($hasil);
?>
<!DOCTYPE html>
<html>
<head>
<title>Curl Data JSON</title>
</head>
<body>
<br>
<p>
<?php
foreach ($hasil as $i):
?>
Nama: <?php echo $hasil->id_mhs; ?><br>
<?php endforeach;?>
</p>
</body>
</html>
может ли кто-нибудь помочь мне решить эту ошибку из-за недопустимого цикла? Спасибо:)
Это потому, что $ profile - это строка, поэтому ее кодирование как строка будет декодироваться как строка, также я заметил, что вы помещаете TRUE в свой декодер. Это декодирует его как массив, а не как объект






Ответ от веб-сервиса JSON? Если это так, вам не нужно его json_encode.
Кроме того, поскольку вы передаете true в качестве второго параметра json_decode, это будет массив вместо объекта. Вы можете вызвать
$hasil = json_decode($json_format);
Получить объект.
Также в вашем foreach вам нужно использовать $i вместо $hasil.
какой вывод
var_dump($hasil)? а зачем вы это сохраняете в переменной$hdcode?