如何迭代对象属性中嵌套在对象数组中的所有级别的对象数组?

问题描述 投票:0回答:1
object(stdClass)[1] 
  public 'inbox' =>  
    array 
      0 =>  
        object(stdClass)[2] 
          public 'from' => string '55512351' (length=8) 
          public 'date' => string '29/03/2010' (length=10) 
          public 'time' => string '21:24:10' (length=8) 
          public 'utcOffsetSeconds' => int 3600 
          public 'recipients' =>  
            array 
              0 =>  
                object(stdClass)[3] 
                  public 'address' => string '55512351' (length=8) 
                  public 'name' => string '55512351' (length=8) 
                  public 'deliveryStatus' => string 'notRequested' (length=12) 
          public 'body' => string 'This is message text.' (length=21) 
      1 =>  
        object(stdClass)[4] 
          public 'from' => string '55512351' (length=8) 
          public 'date' => string '29/03/2010' (length=10) 
          public 'time' => string '21:24:12' (length=8) 
          public 'utcOffsetSeconds' => int 3600 
          public 'recipients' =>  
            array 
              0 =>  
                object(stdClass)[5] 
                  public 'address' => string '55512351' (length=8) 
                  public 'name' => string '55512351' (length=8) 
                  public 'deliveryStatus' => string 'notRequested' (length=12) 
          public 'body' => string 'This is message text.' (length=21) 
      .... 
      .... 

我有这个foreach,但它不迭代addressnamedeliveryStatus!您能展示如何获取这些数据吗?

foreach ($data->inbox as $note) {
  echo '<p>';
  echo 'From : ' . htmlspecialchars($note->from) . '<br />';
  echo 'Date : ' . htmlspecialchars($note->date) . '<br />';
  echo 'Time : ' . htmlspecialchars($note->time) . '<br />';
  echo 'Body : ' . htmlspecialchars($note->body) . '<br />';
}
php arrays loops object foreach
1个回答
1
投票

地址、姓名、送货状态位于子数组中,因此您需要迭代子数组才能提取要打印的数据

foreach ($data->inbox as $note) {
  echo '<p>';
  echo 'From : ' . htmlspecialchars($note->from) . '<br />';
  echo 'Date : ' . htmlspecialchars($note->date) . '<br />';
  echo 'Time : ' . htmlspecialchars($note->time) . '<br />';
  echo 'Body : ' . htmlspecialchars($note->body) . '<br />';

  //now iterate over the child array
  foreach ($note->recipients as $recipient) {
      echo 'x : ' . htmlspecialchars($recipient->address) . '<br />';
      echo 'y : ' . htmlspecialchars($recipient->name) . '<br />';
      echo 'z : ' . htmlspecialchars($recipient->$recipient->address) . '<br />';
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.