Я хочу распечатать данные один за другим, используя массив JSON.
[
{
"meta_device_id":"NEA8000000345",
"name":"Jaffna",
"description":"aq",
"latitude":9.779333,
"longitude":80.04059,
"pm10":31.0,
"pm25":55.0,
"pm100":74.0,
"co2":4996.0,
"temperature":27.94,
"timestamp":1647383654251
},
{
"meta_device_id":"NEA8000011",
"name":"Galle",
"description":"MET Department, Galle",
"latitude":6.0297956,
"longitude":80.21212,
"pm10":28.0,
"pm25":43.0,
"pm100":52.0,
"co2":2264.81,
"temperature":34.59,
"timestamp":1647398582681
}
]
Это мой массив json. Я хочу взять meta_device_id для переменной. Как мне это сделать ?
@AndreaOlivato Спасибо за повтор. Я также проверяю этот пример, но всегда показываю пустым. '$json = file_get_contents('123.231.44.147/nbro-invoker/api/sensor/flat-info'); $вкусняшка = json_decode($json); эхо $вкусняшка->meta_device_id; Это код, который я использую.
Это связано с тем, что API возвращает массив объектов json, поэтому попытка доступа к свойству meta_device_id не сработает. Вам нужно будет указать, к какому устройству вы хотите получить доступ, либо с помощью индекса, например. $yummy[0]->meta_device_id
. Или вы можете использовать array_column
для получения массива идентификаторов устройств для всех устройств, возвращенных из вызова API, как в этой демонстрации 3v4l.org/ovAZa. Или сделайте foreach($yummy as $yum)
, чтобы получить доступ к каждому объекту JSON в массиве.
вам нужно decode
ваш результат json
, а затем либо перебрать ваши данные, чтобы получить meta_device_id
, либо вы можете получить значение с помощью array index.
$string = '[
{
"meta_device_id":"NEA8000000345",
"name":"Jaffna",
"description":"aq",
"latitude":9.779333,
"longitude":80.04059,
"pm10":31.0,
"pm25":55.0,
"pm100":74.0,
"co2":4996.0,
"temperature":27.94,
"timestamp":1647383654251
},
{
"meta_device_id":"NEA8000011",
"name":"Galle",
"description":"MET Department, Galle",
"latitude":6.0297956,
"longitude":80.21212,
"pm10":28.0,
"pm25":43.0,
"pm100":52.0,
"co2":2264.81,
"temperature":34.59,
"timestamp":1647398582681
}
]';
$yummy = json_decode($string);
Теперь вы можете перебирать свои данные и сохранять значения в массиве.
$myarr = array();
$i=0;
foreach($yummy as $yum)
{
$myarr[$i] = $yum->meta_device_id;
$i++;
}
var_dump($myarr); // array(2) { [0]=> string(13) "NEA8000000345" [1]=> string(10) "NEA8000011" }
ИЛИ вы можете получить значения по индексу.
var_dump($yummy[0]->meta_device_id); // NEA8000000345
var_dump($yummy[0]->meta_device_id); // NEA8000011
Спасибо за ответ . Да, этот код работает, еще раз спасибо. У меня есть еще один вопрос. для $string, как можно использовать URL-адрес API. Я проверил, используя приведенный ниже код, но он не работает. '$string1 = '123.231.44.147/nbro-invoker/api/датчик/плоская информация'; $string = file_get_contents($string1); $вкусняшка = json_decode($string); $myarr = массив(); $i=0; foreach($yummy as $yum) { $myarr[$i] = $yum->meta_device_id; $я++; } var_dump($myarr); // массив(2) { [0]=> строка(13) "NEA8000000345" [1]=> строка(10) "NEA8000011" } '
вы можете свернуть свой API и передать результат в $string.
Отвечает ли это на ваш вопрос? Как извлечь и получить доступ к данным из JSON с помощью PHP?