问题中的foreach

问题描述:

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,如何解决?

也许你会破灭单位和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 
      } 
     } 

应该尝试这两种方法,看看哪一个是少消耗资源

尝试:

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:编辑,谢谢。 –