【问题标题】:Looping through a PHP array循环遍历 PHP 数组
【发布时间】:2012-12-11 17:12:41
【问题描述】:

我有以下 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; ?>

我不确定如何循环遍历数组的“bio”部分并回显每个段落。

所以作为最终输出,我应该有两个 h1(名字和姓氏)和三个段落(简历)。

我该怎么做?

【问题讨论】:

  • 仅供参考,您在生物初始化中缺少单引号
  • 所有优秀的答案。如果我能接受所有这些,我会的。谢谢大家!

标签: php arrays loops


【解决方案1】:

使用foreach循环

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

【讨论】:

    【解决方案2】:

    您不需要使用手动计数器,您可以使用 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】:

      在while循环中也加入这个:

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

      请注意,使用的编码风格不是最佳的。

      【讨论】:

        【解决方案4】:

        试试:

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

        【讨论】: