1

所以我正在处理一个表单,我正在使用 PHP 从数据库中提取一组联系人。由于结果是一个数组,我正在使用一个 foreach 循环来回显联系人并继续前进。这是我的代码:

    <p class='contact-list'>
      <?php

        foreach( $contacts as $contact ){
            echo "<p><input type='radio' name='contact' id='contact-{$contact['id']}' value='{$contact['id']}'/>";
            echo " {$contact['name']}</p>";
        }

      ?>
    </p>

我这样做是因为我希望将每个联系人作为 .contact-list 的子项放置,并且当页面呈现时,源看起来应该是:

<p class='contact-list'>
    <p><input type='radio' ...
    </p>
    <p><input type='radio' ...
    </p>
</p>

事实并非如此。每个联系人不是 .contact-list 的孩子,而是它的兄弟,我想知道为什么会这样。

页面渲染后的来源是这样的:

<p class='contact-list'></p>
<p><input type='radio' name=''...
</p>
<p><input type='radio' name=''...
</p>

谁能解释为什么段落标签在 foreach 循环运行之前关闭?

更新:

我决定使用 div 而不是段落,然后嵌套工作正常,所以我假设这是段落标签的一个特征。也就是说,我仍然有兴趣找出为什么段落标签会这样做。

4

2 回答 2

3

因为p是一个只能包含内联元素的块元素。但是您将其他p元素放入其中。改用s 这应该可以按您的预期span工作p

于 2012-05-14T14:08:18.537 回答
0

你试过这个吗?

foreach( $contacts as $contact ){
        echo "<span><input type='radio' name='contact' id='contact-{$contact['id']}' value='{$contact['id']}'/>{$contact['name']} </span>";
    }
于 2012-05-14T14:09:37.080 回答