2016-05-29 41 views
0

我有一個json對象,我想在使用php的循環中訪問它。有沒有一種方法可以在循環中訪問它,甚至無需解碼?請幫忙。這是我的代碼。如何使用php訪問循環中的JSON對象?

for($i = 0; $i < count($purchases); $i++){ ?> 

    <tr class="tr-purchase"> 

     <td>{{ $purchases[$i]['purchase_orders'] }}</td> 

    </tr> 
}?> 

{ 「ID」:35, 「po_code」: 「PMS201635」, 「purchase_orders」: 「一個:2:{I:0;一個:7:{S:2:\」 ID \」 ; S:1:\ 「9 \」; S:3:\ 「數量\」; S:1:\ 「2 \」; S:4:\ 「單位\」; S:7:\ 「膠囊\」 ; s:6:「pharma」:12:「布洛芬IB」s:9:「packaging」s:7:「50 caps」s:5:price \ 「; S:2:\」 23 \ 「; S:5:\」 總\ 「; S:2:\」 46 \ 「;} I:1;一個:7:{S:2:\」 ID \ 「; S:2:\」 11 \ 「; S:3:\」 數量\ 「; S:1:\」 5 \ 「; S:4:\」 單位\ 「; S:6:\」 件「s:6:」pharma「:12:」Ecotrin oral「s:9:」packaging「s:6:」100pcs「s:5:價格\ 「; S:2:\」 13 \ 「; S:5:\」 總\ 「; S:2:\」 65 \ 「;}}」, 「freight_charge」: 「0」, 「overall_total」: 「111」,「created_at」:「2016-05-21 16:50:49」,「updated_at」:「2016-05-21 16:50:49」,「shipped_via」:「選擇」,「條款」: 「」}

我只想訪問對象內的一些值。我怎樣才能訪問它?謝謝。

+0

如果是json,則使用'json_decode'並將其作爲數組訪問。 –

+0

發佈你的例子json數據,而不是圖像。 –

+0

Okey你需要什麼數據作爲輸出? –

回答

2

以下是您如何獲得製藥公司的例子,如果您需要更多的幫助,請讓我知道。 Online Check

首先,你需要json_deocde JSON字符串並獲得purchase_orders它的另一個序列化數據,使用unserialize並再次獲得數組和訪問它。

$json = '{"id":35,"po_code":"PMS201635","purchase_orders":"a:2:{i:0;a:7:{s:2:\\"id\\";s:1:\\"9\\";s:3:\\"qty\\";s:1:\\"2\\";s:4:\\"unit\\";s:7:\\"Capsule\\";s:6:\\"pharma\\";s:12:\\"Ibuprofen IB\\";s:9:\\"packaging\\";s:7:\\"50 caps\\";s:5:\\"price\\";s:2:\\"23\\";s:5:\\"total\\";s:2:\\"46\\";}i:1;a:7:{s:2:\\"id\\";s:2:\\"11\\";s:3:\\"qty\\";s:1:\\"5\\";s:4:\\"unit\\";s:6:\\"Pieces\\";s:6:\\"pharma\\";s:12:\\"Ecotrin oral\\";s:9:\\"packaging\\";s:6:\\"100pcs\\";s:5:\\"price\\";s:2:\\"13\\";s:5:\\"total\\";s:2:\\"65\\";}}","freight_charge":"0","overall_total":"111","created_at":"2016-05-21 16:50:49","updated_at":"2016-05-21 16:50:49","shipped_via":"Select","terms":""}'; 
$result = json_decode ($json); 
$arr = unserialize ($result->purchase_orders); 

foreach($arr as $val){ 
    echo '<pre>'; 
    print_r($val); 
} 

指定值,讓cehck用於製藥是Ibuprofen IB與否,這樣做是使用if條件。

if($val['pharma'] == 'Ibuprofen IB'){ 
    echo 'Yes you are in "Ibuprofen IB"'; 
} 
+0

* purchase_orders *是**序列化** ... – Poiz

+0

是的,它是序列化的數據。 –

+0

加上序列化對象的內容是一個多維數組,你可以從它的簽名中猜測出... – Poiz

2

首先,你必須通過調用 「json_decode($ jsonData)」 的JSON數據轉換回原生PHP對象。結果將是一個PHP對象,如下所示:

<?php 
     // CREATE AN ARRAY TO HOLD THE REAL PHP OBJECT 
     // DECODED FROM THE JSON DATA 
     $arrPurchases  = json_decode($purchases); 
    ?> 

現在,您已將數組中的所有購物項都包含在內。每個單個鍵的值對應一個PHP對象,你現在可以通過一個新的Loop訪問像這樣...

<?php 
     foreach($arrPurchases as $i=>$objPurchase){ ?> 

     <tr class="tr-purchase"> 
      // SINCE purchase_orders IS A SERIALIZED ARRAY 
      // YOU STILL HAVE TO UNSERIALIZE IT TO GET THE DATA YOU WANT.... 
      // BUT YOU MAY JUST var_dump() IT TO SEE THAT YOU ARE ON TRACK... 
      <?php var_dump($objPurchase->purchase_orders); ?> 

      <!-- UNSERIALIZE THE DATA TO GET WHAT YOU NEED --> 
      <?php $data = unserialize($objPurchase->purchase_orders)); ?> 

      <?php // RESULT OF THE UNSERIALIZE WILL BE AN ARRAY... ?> 
      <?php $output = ""; foreach($data as $iDex=>$arrObj): ?> 
       <td> 
        <!-- START WORKING WITH THE ARRAY: $arrObj --> 
        <!-- BUILD UP YOUR STRING OUTPUT THEREFROM & THE ECHO IT WITHIN THE <TD> --> 
        <?php //$output .= $arrObj[]; ?> 
        <?php // ECHO THE RESULTING OUTPUT HERE; ?> 
       </td> 
      <?php endforeach; ?> 
     </tr> 

    <?php }?>