2016-12-16 29 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的作为第二个参数的项目才是真实的。