如何将JSON放入PHP变量?

时间:2017-12-27 11:04:41

标签: php html json

我正在尝试将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);
}

3 个答案:

答案 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);