【发布时间】:2011-01-02 11:44:37
【问题描述】:
<?php
$a=1;
?>
<?=$a;?>
<?= 到底是什么意思?
【问题讨论】:
-
旁注:这在 ASP.NET MVC 视图中广泛使用。
-
请注意
;是多余的;正如答案所暗示的那样,这个短标签扩展为echo,并在末尾添加了一个分号,根据php documents。
<?php
$a=1;
?>
<?=$a;?>
<?= 到底是什么意思?
【问题讨论】:
; 是多余的;正如答案所暗示的那样,这个短标签扩展为echo,并在末尾添加了一个分号,根据php documents。
这是<?php echo $a; ?> 的简写。
无论php.ini 设置如何,它默认启用since 5.4.0。
【讨论】:
<?= 为 <?php echo 是不够的。无论如何,截至今天,我希望你们没有任何运行 PHP PHP Supported Versions)。
【讨论】:
因为它不会增加任何价值来重复它意味着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;
}
来自List of Parser Tokens、here is what T_OPEN_TAG_WITH_ECHO links to。
【讨论】:
<?= $a ?> 与<? echo $a; ?> 相同,只是为了方便起见。
【讨论】:
<?=$a; ?>
是一个快捷方式:
<?php echo $a; ?>
【讨论】:
从 PHP 5.4.0 开始,
<?= ?>
即使没有在 php.ini 中设置 short_open_tag,也始终可用。
此外,从 PHP 7.0 开始,ASP 标签:
<%, %>
和脚本标签
<script language="php">
已从 PHP 中删除。
【讨论】:
如果启用了short_open_tags,它是<?php echo $a; ?> 的快捷方式。参考:http://php.net/manual/en/ini.core.php
【讨论】:
我希望它不会被弃用。虽然编写<? blah code ?> 是相当不必要的并且与XHTML 混淆,但<?= 不是,原因很明显。不幸的是我没有使用它,因为 short_open_tag 似乎越来越被禁用了。
更新:我现在再次使用<?=,因为它在 PHP 5.4.0 中默认启用。
见http://php.net/manual/en/language.basic-syntax.phptags.php
【讨论】: