foreach:如何迭代这个

时间:2010-03-30 08:32:18

标签: php arrays foreach loops

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,但它没有迭代地址名称 deliveryStatus !你能说明如何获得这些数据吗?

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 />';
}

1 个答案:

答案 0 :(得分:1)

地址,名称,deliveryStatus位于子数组中,因此您需要迭代子数组以便能够提取要打印的数据

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 />';
  }
}