Я знаю, что это основной вопрос, но я не могу понять, как на самом деле это сделать. Я прочитал бесчисленные учебники об этом, но, похоже, они не работают.
var_dump($google_check);
возвращает следующее:
string(488) "{
"matches": [
{
"threatType": "MALWARE",
"platformType": "LINUX",
"threat": {
"url": "http://malware.testing.google.test/testing/malware/"},
"cacheDuration": "300s",
"threatEntryType": "URL"},
{
"threatType": "MALWARE",
"platformType": "LINUX",
"threat": {
"url": "http://malware.testing.google.test/testing/malware/"},
"cacheDuration": "300s",
"threatEntryType": "URL"}
]
}
"
Я хочу отображать результаты из массива, так что-то вроде
echo $google_check[0][matches][threat];
echo $google_check[1][matches][threat];
Проблема в том, что это возвращает недопустимое смещение для совпадений и угроз, и только эхо — один символ {
Что я делаю неправильно? Как отобразить результаты из этого массива, не выгружая весь массив?
Ответ, который вы получили, находится в json, поэтому вам нужно сначала json_decode ответить.
$decoded = json_decode($google_check, true);
Тогда вы можете получить к нему доступ как массив
echo $decoded['matches'][0]['threat'];
echo $decoded['matches'][1]['threat'];
если вам нужно значение url, вам нужно сделать это следующим образом.
echo $decoded['matches'][0]['threat']['url'];
echo $decoded['matches'][1]['threat']['url'];
также обратите внимание, что при просмотре ключей массива, которые не являются числовыми, вам нужно заключить в кавычки (например, $ decoded [‘match’] вместо $ decoded [match]).
Вот краткое объяснение JSON
Других решений пока нет …