PHPで「<?=」はどういう意味ですか?


159
<?php

$a=1;

?>
<?=$a;?>

<?=正確にはどういう意味ですか?


補足:これはASP.NET MVCビューで広く使用されています。
Omar


12
;は冗長であることに注意してください。答えはechophpのドキュメントに従って、この短いタグが末尾にセミコロンが追加されたに展開されることを示唆しています
not-just-yeti

回答:


229

これはの省略形です<?php echo $a; ?>

設定に関係なく、5.4以降ではデフォルトで有効になっていphp.iniます。


1
PHP 7で利用できますか?
zachdyer 2018

4
最後のセミコロンは必要ないことに注意してください。ただし<?=<?php echoなんらかの理由でクラシックタグに戻る必要がある場合は、プロジェクト全体の単純な検索/置換では十分ではありません。とにかく、今日のバージョンではPHP 5.6未満を実行している運用サーバーがないことを願っています。このバージョンはもうメンテナンスされていないためです(PHPでサポートされているバージョン)。
TwystO 2018

47

これはこれの省略形です:

<?php echo $a; ?>

それらは短いタグと呼ばれます。ドキュメントの例2を参照してください。


12
以下の回答に記載されているように、すべてのサーバーが短いタグをサポートしているわけではないことに注意してください。php.iniが必要ですshort_open_tag = On
Corey Ballou

17

それが意味することを繰り返すために値を追加することはないのでecho、私はあなたがPHPで何が意味するのかを正確に見たいと思った:

Array
(
    [0] => Array
        (
            [0] => 368 // T_OPEN_TAG_WITH_ECHO
            [1] => <?=
            [2] => 1
        )
    [1] => Array
        (
            [0] => 309 // T_VARIABLE
            [1] => $a
            [2] => 1
        )
    [2] => ; // UNKNOWN (because it is optional (ignored))
    [3] => Array
        (
            [0] => 369 // T_CLOSE_TAG
            [1] => ?>
            [2] => 1
        )
)

このコードを使用して、自分でテストできます。

$tokens = token_get_all('<?=$a;?>');
print_r($tokens);
foreach($tokens as $token){
    echo token_name((int) $token[0]), PHP_EOL;
}

パーサトークンの一覧ここに何T_OPEN_TAG_WITH_ECHOリンクです


トークンは詳細を教えてくれませんでした。
user198729、2010年


7

PHP 5.4.0以降で<?= ?> は、php.iniにshort_open_tagが設定されていなくても、 常に使用できます。

さらに、PHP 7.0では、ASPタグ: <%, %> とスクリプトタグ <script language="php"> がPHPから削除されています。




3

廃止されないことを願っています。書くこと<? blah code ?>はかなり不必要であり、XHTMLと混同されますが、<?=明白な理由でそうではありません。残念ながら、私はそれを使用していません。short_open_tagがますます無効になっているようです。

アップデート:私は使用しない<?=、それがPHP 5.4.0でデフォルトで有効になっているため、今再び。http://php.net/manual/en/language.basic-syntax.phptags.phpを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.