1

私は次の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」部分をループして各段落をエコーする方法がわかりません。

したがって、最終的な出力として、2つのh1(名前と姓)と3つの段落(略歴)が必要です。

どうすればこれを行うことができますか?

4

4 に答える 4

3

foreachループを使用

foreach($item['bio'] as $listitem) {
   echo $listitem;
}
于 2012-12-11T17:14:40.277 に答える
1

これもwhileループに追加します。

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

使用されるコーディングスタイルは最適ではないことに注意してください。

于 2012-12-11T17:17:54.853 に答える
1

手動カウンターを使用する必要はありません。foreachを使用できます。これは一般的に最も簡単な方法であり、1つずつエラーを防ぎます。

次に、バイオをループするための2番目の内部ループが必要です。

<?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; ?>

関連する注記について; おそらく、出力のエスケープを検討する必要があります。

于 2012-12-11T17:18:13.240 に答える
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>';
} 
于 2012-12-11T17:27:06.140 に答える