我正在尝试将JSON-Information放入PHP变量中,并且我一直都会收到错误。
这是我使JSON可读的代码:
header('Content-Type: application/json');
$jsondecode1 = json_decode($json1);
print_r ($jsondecode1);
这是$jsondecode1
:
Array
(
[0] => stdClass Object
(
[flightId] => ******
[******] => stdClass Object
(
[******] => ******
[******] => ******
[******] => ******
[******] => ******
[******] => ******
)
注意:当我echo
jsondecode1
时,它会输出:
数组转换为字符串 C:\ xampp ...... \ simpletest3.php 开启 48
行
所以我使用了print_r()
。
我试图将(例如)[flightId]
放入PHP变量中:
$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1->flightId;
print_r ($jsondecode2);
输出:注意:尝试在 C:......... \ simpletest3.php 中获取非对象的属性'flightId' 48
我也尝试了其他一些代码,但输出非常相似,我不想让我的问题比它需要的时间更长。
那么,我如何将[flightId]
放入PHP变量中(例如)。
修改
解决方案:
$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
print_r ($jsondecode2);
或者:
foreach ($jsondecode1 as $data) {
print_r($data->flightId);
}
答案 0 :(得分:2)
你必须像下面那样(你所展示的)
$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
echo $jsondecode2;
但是您有多维数组,请执行以下操作: -
$jsondecode1 = json_decode($json1);
foreach ($jsondecode1 as $jsondecode) {
echo $jsondecode->flightId; // here you can use echo $flightId = $jsondecode->flightId;
}
答案 1 :(得分:2)
你的json包含一个对象数组,而不是一个对象。
$jsondecode1 = json_decode($json1);
// loop through all objects in the array
foreach ($jsondecode1 as $data) {
print_r($data->flightId);
}
或者,如果您只想拥有数组的第一个对象:
$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
print_r ($jsondecode2);
但问题是为什么json是数组而不是单个对象?
此外,您不能简单地回显或打印非标量类型(如数组或对象),因为您必须使用print_r
。
答案 2 :(得分:2)
您的flightId
位于索引为0
的一个数组中。因此,您必须首先访问该数组,然后才能获得flightId
尝试以下代码:
$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
print_r ($jsondecode2);