2011-09-18 53 views
0

JSON解碼後的回聲陣列我有這個json encode在數據庫中的一行,我想回波值name_runitsprice_change一起在foreach,怎麼回事?問題中的foreach

[{ 
    "name_r": "saeed", 
    "units": ["salam", "11", "11", "khobe", "22", "22", "salam"], 
    "price_change": ["33", "33", "33", "44", "44", "44"] 
}, { 
    "name_r": "salavat", 
    "units": ["55", "55", "khobe", "66", "66"], 
    "price_change": ["77", "77", "77", "88", "88", "88", "99", "99", "99"] 
}] 

這是我的PHP:

 foreach ($query->result() as $row){ 
      $data = json_decode($row->residence,true); 
      foreach($data as $datum){ 
      echo $datum['name_r'].'<br>'; 
      echo $datum['units'].'<br>'; //This is line 5 
      echo $datum['price_change'].'<br>'; ///This is line 6 
      } 
     } 

這個PHP代碼輸出正是這種

saeed 
Array //Output line 5 
Array //Output line 6 
salavat 
Array //Output line 5 
Array //Output line 6 

爲什麼在第5行& 6輸出Array,如何解決?

回答

0

也許你會破滅單位和price_change數組,以避免更主要的內部foreach。

foreach ($query->result() as $row){ 
      $data = json_decode($row->residence,true); 
      foreach($data as $datum){ 
      echo $datum['name_r'].'<br>'; 
      echo implode(',', $datum['units']).'<br>'; //This is line 5 as string, separated by ',' 
      echo implode(',', $datum['price_change']).'<br>'; ///This is line 6, same as line 5 
      } 
     } 

應該嘗試這兩種方法,看看哪一個是少消耗資源

1

嘗試:

foreach ($query->result() as $row){ 
     $data = json_decode($row->residence,true); 
     foreach($data as $datum){ 
      echo $datum['name_r'].'<br>'; 
      foreach($datum['units'] as $d){ 
       echo "\t".$d.'<br>'; 
      } 
      foreach($datum['price_change'] as $d){ 
       echo "\t\t".$d.'<br>'; 
      } 
     } 
    } 

編輯: ,我們要恢復的元素是數組,因此有必要在一個循環打印到去...

+0

你也應該解釋爲什麼它的發生。 – JohnD

+0

@Alfonso Rubalcava - 謝謝,沒有辦法,除了foreach? –

+0

@JohnD:編輯,謝謝。 –