2017-12-27 202 views
3

我试图将JSON信息放入一个PHP变量中,并且我总是得到错误。如何将JSON放入PHP变量中?

这是我的代码,以使JSON可读:

header('Content-Type: application/json'); 
$jsondecode1 = json_decode($json1); 
print_r ($jsondecode1); 

这是$jsondecode1的一个片段:

Array 
(
    [0] => stdClass Object 
     (
      [flightId] => ****** 
      [******] => stdClass Object 
       (
        [******] => ****** 
        [******] => ****** 
        [******] => ****** 
        [******] => ****** 
        [******] => ******     
       ) 

注意:当我echojsondecode1它输出这样的:

阵列到字符串转换 C:\ XAMPP ...... \ simpletest3.php上 线

所以我用print_r()

我试图把(例如)[flightId]到一个PHP变量:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1->flightId; 
print_r ($jsondecode2); 

输出:注意:试图让财产下不发对象的 'FLIGHTID' :. ........ \在线simpletest3.php

我尝试了一些其他的代码也一样,但产出非常相似,我不想让我的问题比需要的时间更长。 那么,如何将(例如)[flightId]放入PHP变量中。

编辑:

解决方案:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1[0]->flightId; 
print_r ($jsondecode2); 

或者:

foreach ($jsondecode1 as $data) { 
    print_r($data->flightId); 
} 

回答

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

大它也能工作。非常感谢你。 :) – Deadpool

+0

@duffbeerisgood当你使用'json_decode()'它将json字符串转换成对象数组 –

+1

@duffbeerisgood所以我应该使用json_decode()吗? – Deadpool

2

你json包含一个对象数组,而不是1个对象。

$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

+1

伟大的解决方案。谢谢 ! – Deadpool

+0

我不知道为什么JSON是一个数组,我想你们可以告诉我。 – Deadpool

+0

@duffbeerisgood这是你的输入,所以我不能告诉你为什么它是这样的:) $ json1是一个包含类似[{“flightId”:“******”,...}]之类的字符串。这是一组对象。如果它有{“flightId”:“******”,...},没有[和]在它周围,它是一个单一的json对象。 – Robert

2

您的flightId位于一个阵列内,whoch索引为0。所以,你必须首先访问的是数组,那么你可以得到flightId

试试下面的代码:

$jsondecode1 = json_decode($json1); 
$jsondecode2 = $jsondecode1[0]->flightId; 
print_r ($jsondecode2); 
+0

很好,它的工作原理。非常感谢你。 :) – Deadpool