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ループが実行される前にParagraphタグが閉じている理由を誰かが説明できますか?

アップデート:

段落の代わりにdivを使用することにしましたが、ネストは正しく機能したので、これが段落タグの特性であると想定しています。そうは言っても、段落タグがこれを行う理由を見つけることにまだ興味があります。

4

2 に答える 2

3

pは、インライン要素のみを含むことができるブロック要素であるためです。しかし、あなたはそれに他のp要素を入れます。span代わりにsを使用する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 に答える