2012-12-11 322 views
1

我有以下PHP陣列結構:通過PHP數組循環

$set = array(); 
$set[] = array('firstname'=>'firstname 1', 
      'lastname'=>'lastname 1', 
      "bio"=>array('paragraph 1 of the bio, 'paragraph 2 of the bio','paragraph 3 of the bio'), 
      ); 

我然後用下面的訪問數組:

<?php $counter = 0; 
    while ($counter < 1) : //1 for now 
    $item = $set[$counter]?> 

    <h1><?php echo $item['firstname'] ?></h1> 
    <h1><?php echo $item['lastname'] ?></h1> 

    <?php endwhile; ?> 

我不確定我怎麼可以遍歷「生物「部分陣列並回顯每一段。所以作爲最後的輸出,我應該有兩個h1s(姓和名)和三個段落(生物)。

我該如何去做這件事?

+0

FYI你缺少一個單引號中的生物初始化 – Sharlike

+0

所有優秀的答案。如果我能接受他們,我會的。謝謝大家! – hellofavision

回答

1

你不需要使用手動計數器,你可以使用foreach。這通常是最簡單的方法,可以防止逐個錯誤。

然後你需要第二個內循環來循環生物。

<?php foreach ($set as $item): ?> 
    <h1><?php echo $item['firstname'] ?></h1> 
    <h1><?php echo $item['lastname'] ?></h1> 
    <?php foreach ($item['bio'] as $bio): ?> 
     <p><?php echo $bio; ?></p> 
    <?php endforeach; ?> 
<?php endforeach; ?> 

在相關說明;你可能想看看逃離你的輸出。

3

使用foreach

foreach($item['bio'] as $listitem) { 
    echo $listitem; 
} 
1

添加到while循環也是這樣:

<?php foreach ($item['bio'] as $paragraph): ?> 
    <p><?php echo $paragraph; ?></p> 
    <?php endforeach; ?> 

注意,使用的編碼風格是不是最佳的。

0

嘗試:

foreach($set as $listitem) { 
if(is_array($listitem)) { 
foreach($listitem as $v) //as $set['bio'] is an array 
    echo '<h1>' .$v . '</h1>'; 
} else 
echo '<p>'.$listitem.'</p>'; 
}