2016-12-16 30 views
0

我已存儲在數據庫中的JSON它看起來像這樣如何解碼性病類對象

[{"class":"button-input btn btn-warning","name":"gorilla-preview","value":"Goat","id":"gorilla-preview"}] 

即時取回這樣

while($row = mysqli_fetch_assoc($res)){ 
      $array[] = json_decode($row['element']); 


     } 
    echo "<pre>"; 
    print_r($array); 

其輸出中看起來像這樣

Array 
(
    [0] => Array 
     (
      [0] => stdClass Object 
       (
        [class] => button-input btn btn-warning 
        [name] => gorilla-preview 
        [value] => Goat 
        [id] => gorilla-preview 
       ) 

     ) 

) 

我的問題是:如何得到正確的格式所有這些價值?

+0

您期望輸出什麼? – Timurib

+0

簡單'鍵=> value'對數組 –

+1

只需設置爲TRUE; json_encode的'的第二個參數()',如果他設定第二參數設置爲TRUE或沒有那麼長 – Timurib

回答

1

,因爲你是在陣列中存儲的解碼JSON數據你可能不得不再次循環。因此,獲取存儲在JSON對象,你需要第二個循環,像這樣的獨特的價值觀:

注:從您的JSON數據結構,似乎很多很明顯,你需要一個嵌套循環,但。 ..

<?php 

     foreach($array as $index=>$arrData){ 
      foreach($arrData as $key=>$objData){ 
       // DO SOMETHING WITH THE INTERNAL VALUES OF THE JSON DATA. 
       var_dump($objData->class); 
       var_dump($objData->name); 
       var_dump($objData->value); 
       var_dump($objData->id); 
      } 
     } 

或者,也可以(如果你願意)跳過存儲在數組中的數據和所述第一回路中直接使用它,像這樣:

<?php 

     while($row = mysqli_fetch_assoc($res)){ 
      $objData = json_decode($row['element'][0]); 
      // DO SOMETHING WITH THE DATA LIKE BUILD A DYNAMICALLY GENERATED HTML STRING. 
      echo "<p class='{$objData->class}' id='{$objData->id}'>{$objData->value}</p>; 
     } 

UPDATE:
如果根據您的意見,你有一個JSON數據,如:[{"class":"button-input btn btn-warning","name":"gorilla-preview","value":"Goat","id":"g‌​orilla-preview"}]下面的片段(您可能Quick-Test Here顯示你如何可以訪問自己的數據:

 $json  = '[{"class":"button-input btn btn-warning","name":"gorilla-preview","value":"Goat","id":"g‌​orilla-preview"}]'; 
     $arrData = json_decode($json); 

     foreach($arrData as $key=>$objData){ 
      // DO SOMETHING WITH THE INTERNAL VALUES OF THE JSON DATA. 
      var_dump($objData->class);  //<==YIELDS:: string 'button-input btn btn-warning' (length=28) 
      var_dump($objData->name);  //<==YIELDS:: string 'gorilla-preview' (length=15) 
      var_dump($objData->value);  //<==YIELDS:: string 'Goat' (length=4) 
      var_dump($objData->id);   //<==YIELDS:: string 'g‌​orilla-preview' (length=21) 
     } 
+0

你的答案似乎是正確的,但嵌套的水平是它有什麼,現在確定我已經實現了它,但它給這個錯誤'試圖獲取非object'的屬性,您可以幫我在這方面感謝 –

+0

@DilipG你能檢查更新的代碼嗎?雖然不足爲奇,你還需要一個嵌套循環......;-) – Poiz

+0

請不要感到不好,據我所知''json_decode()'將'json'轉換爲'php數組',所以這個我的代碼'json_decode($ row ['element']);'正在轉換' json'到'array'那麼爲什麼我不能使用''''''像'$ objData-> class' –

1

用途:

json_decode($row['element'], true); 

當你需要json_decode返回關聯數組來代替OB的作爲第二個參數的項目纔是真實的。