6

私はPHPにかなり慣れていません。私は3週間前のようにそれを学び始めました。StackOverflow、Google、または Youtube でこの質問に対する答えが見つかりません。これに対するPHPのドキュメントは私を混乱させます。質問を続けるために、HTML と混合された PHP コードはどのように機能しますか?

<?php if (something) { ?>
    <p>Hello</p>
<?php } ?>

p 要素は、何かが真の値を持っている場合にのみ表示されますが、これはどうですか?... PHP エンジンは、コードブロックの外側で起こっていること (例: <?php ?>) を無視し、解析するだけだと思いました。内部で何が起こるか。

以下のコードは PHP エンジンによって正常に解析され、HTML 要素に影響を与えることなくブラウザーに送信されます (明らかに 2 つのコード ブロックの間にありますが)。

<?php echo $something; ?>
<p>Hello</p>
<?php echo $something; ?>

多くの人がコンマ数秒でそれがどのように機能するかを理解しているように見えるので、この質問をしたことで私が炎上しないことを願っています.

PS私はチャットでこの質問を早い段階で行い、正しく理解していると思っていましたが、実装しようとしたとき、私の心はまだ「これはどのように機能するのですか?」私にはある種のハックのように思えます。

4

5 に答える 5

5

今すぐ簡単に。http://www.tizag.com/phpT/で開始するには、必ず PHP チュートリアルが必要です 。

これがあなたのしていることです:

<?php 
//Anything inside me php processes
if($something)
{
    echo "<p>something</p>";
}
//About to stop processing in php
?>
<p>Anything outside of the php statement above will just be printed to the dom</p>

クイック ノート: PHP を HTML から分離することをお勧めします。

<?php if ($something) { ?>  <-- where is the other {
<p>Hello</p>
<?php } ?> <-- oh I see it.
于 2012-08-20T04:30:09.043 に答える
3

最初の例では<p>Hello</p>、「何か」が true を返す場合にのみレンダリングされるのは実際には true です。

?> で php タグを閉じても、 のように「閉じていない」実行があるif (blah) { ...場合、PHP エンジンはユーザーの要求を理解し、それに応じて実行します。

なんで?

PHP エンジンは、実行が } で閉じられるまで「待機」し続けます。その後、最終結果が評価され、ブラウザーは以下の行を続行します。

明らかに、最後の } を省略すると、いくつかのエラーが表示されます。これは、PHP が開始したことを終了することを期待していたのに、終了していないことを示しています。

于 2012-08-20T04:35:30.740 に答える