Foreach循环嵌套不起作用

时间:2012-05-14 14:03:55

标签: php html foreach nested

所以我正在处理一个表单,我正在使用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循环运行之前,有人能解释为什么Paragraph标签正在关闭吗?

更新

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

2 个答案:

答案 0 :(得分:3)

因为p是一个只能包含内联元素的块元素。但是你在其中添加了其他p - 元素。使用span代替p,这应该可以按预期工作

答案 1 :(得分:0)

你试过这个吗?

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