<?php
$a=1;
?>
<?=$a;?>
What does <?=
mean exactly?
<?php
$a=1;
?>
<?=$a;?>
What does <?=
mean exactly?
It\'s a shorthand for <?php echo $a; ?>
.
It\'s enabled by default since 5.4 regardless of php.ini
settings.
It\'s a shorthand for this:
<?php echo $a; ?>
They\'re called short tags; see example #2 in the documentation.
Since it wouldn\'t add any value to repeat that it means echo
, I thought you\'d like to see what means in PHP exactly:
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
)
)
You can use this code to test it yourself:
$tokens = token_get_all(\'<?=$a;?>\');
print_r($tokens);
foreach($tokens as $token){
echo token_name((int) $token[0]), PHP_EOL;
}
From the List of Parser Tokens, here is what T_OPEN_TAG_WITH_ECHO links to.
<?= $a ?>
is the same as <? echo $a; ?>
, just shorthand for convenience.
<?=$a; ?>
is a shortcut for:
<?php echo $a; ?>
It\'s a shortcut for <?php echo $a; ?>
if short_open_tag
s are enabled. Ref: http://php.net/manual/en/ini.core.php
As of PHP 5.4.0,
<?= ?>
are always available even without the short_open_tag set in php.ini.
Furthermore, as of PHP 7.0, The ASP tags:
<%, %>
and the script tag
<script language=\"php\">
are removed from PHP.
I hope it doesn\'t get deprecated. While writing <? blah code ?>
is fairly unnecessary and confusable with XHTML, <?=
isn\'t, for obvious reasons. Unfortunately I don\'t use it, because short_open_tag seems to be disabled more and more.
Update: I do use <?=
again now, because it is enabled by default with PHP 5.4.0.
See http://php.net/manual/en/language.basic-syntax.phptags.php