10

私はしばらくの間取り組んできましたPHPが、今日これを見たとき、それは私にとって新しいものでした:

if(preg_match('/foo.*bar/','foo is a bar')):
        echo 'success ';
        echo 'foo comes before bar';

endif;

驚いたことに、それもエラーなしで実行されます。誰でも私を啓発できますか?

ありがとうございます :)

4

5 に答える 5

28

これは、制御構造に対する PHP の代替構文です

あなたのスニペットは以下と同等です:

if(preg_match('/foo.*bar/','foo is a bar')) {
        echo 'success ';
        echo 'foo comes before bar';
}

一般に:

if(cond):
...
...
endif;

と同じです

if(cond) {
...
...
}
于 2010-05-07T13:33:13.677 に答える
14

このスタイルの構文は、HTML に埋め込む場合、特にテンプレート/表示ロジックでよく使用されます。このように埋め込むと、中かっこの構文よりも少し読みやすくなります。

<div>
<? if ($condition): ?>
  <ul>
    <? foreach($foo as $bar): ?>
        <li><?= $bar ?></li>
    <? endforeach ?>
  </ul>
<? endif ?>
</div>

対:

<div>
<? if ($condition) { ?>
  <ul>
    <? foreach($foo as $bar) { ?>
      <li><?= $bar ?></li>
    <? } ?>
  </ul>
<? } ?>

詳細な終了タグを使用すると、ネストされたコード ブロックを追跡するのが少し簡単になりますが、それでもほとんどは個人的な好みです。

于 2010-05-07T13:45:53.027 に答える
5

http://php.net/manual/en/control-structures.alternative-syntax.php

ifforwhileforeachおよび で機能しswitchます。PHP と HTML を混在させるには非常に便利です。

于 2010-05-07T13:33:31.507 に答える
1

これについては、PHP マニュアルの制御構造の代替構文を参照してください。再フォーマットすると、投稿したコードは次のようになります。

if (preg_match('/foo.*bar/','foo is a bar')):
    echo 'success ';
    echo 'foo comes before bar';
endif;

このコードは次と同等です。

if (preg_match('/foo.*bar/','foo is a bar')) {
    echo 'success ';
    echo 'foo comes before bar';
}

この構文は、他のいくつかの制御構造でも使用できます。

if ( condition ):
  // your if code
elseif ( other_condition ):
  // optional elseif code
else:
  // optional else code
endif;

while ( condition ):
  // your while code
endwhile;

for ( condition ):
  // your for code
endfor;

foreach ( condition ):
  // your foreach code
endforeach;

switch ( condition ):
  // your switch code
endswitch;
于 2010-05-07T13:38:27.317 に答える
0

これは次と同等です:

if(preg_match('/foo.*bar/','foo is a bar')):
 echo 'success ';
 echo 'foo comes before bar';
endif;

これは次と同等です:

if(preg_match('/foo.*bar/','foo is a bar')){
    echo 'success ';
    echo 'foo comes before bar';
}

非標準の条件付き構文をサポートするという知恵には、明らかに疑問があります。

于 2010-05-07T13:41:23.927 に答える