2017-12-27 226 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