web-dev-qa-db-ja.com

PHPで '<?='とはどういう意味ですか?

<?php

$a=1;

?>
<?=$a;?>

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

134
user198729

<?php echo $a; ?>の省略形です。

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

196
BalusC

これは略記です:

<?php echo $a; ?>

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

43
Will Vousden

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のリンク先

14
Gordon

<?= $a ?><? echo $a; ?>と同じですが、便宜上簡略化しています。

8
<?=$a; ?>

以下のショートカットです。

<?php echo $a; ?>
6
Inspire

PHP 5.4.0の時点で、php.iniでshort_open_tagが設定されていなくても、<?= ?>は常に使用可能です。

さらに、PHP 7.0以降、ASPタグ:<%, %>およびスクリプトタグ<script language="php">はPHPから削除されました。

4
Gaius Gracchus

<?php echo $a; ?>sが有効な場合、short_open_tagのショートカットになります。参照: http://php.net/manual/en/ini.core.php

4
Matteo Riva

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

更新:PHP 5.4.0でデフォルトで有効になっているので、<?=を再び使用します。 http://php.net/manual/en/language.basic-syntax.phptags.php を参照してください

3
antihero