2012-12-11 248 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>'; 
}