所以我正在处理一个表单,我正在使用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 而不是段落,然后嵌套工作正常,所以我假设这是段落标签的特征。也就是说,我仍然有兴趣找出段落标签为什么这样做。
因为p
是一个只能包含内联元素的块元素。但是你把其他p
元素放进去。改用span
p
s,这应该可以按预期工作
你试过这个吗?
foreach( $contacts as $contact ){
echo "<span><input type='radio' name='contact' id='contact-{$contact['id']}' value='{$contact['id']}'/>{$contact['name']} </span>";
}