在PHP中'<?='是什么意思?


Answers:


229

这是的简写<?php echo $a; ?>

从5.4开始,无论php.ini设置如何,默认情况下都启用该功能。


1
在PHP 7中可用吗?
zachdyer '18

4
请注意,不需要最后的分号。但是,如果出于某种原因,你需要回到经典的标签,一个简单的项目范围内查找/替换<?=<?php echowould'nt是不够的。无论如何,到目前为止,我希望你们没有任何运行PHP <5.6的生产服务器,因为不再维护此版本(PHP支持的版本)。
TwystO

47

这是一个简写:

<?php echo $a; ?>

它们被称为短标签;请参阅文档中的示例#2 。


12
请注意,所有服务器都不支持短标签,如下面的答案所述。他们需要php.ini拥有short_open_tag = On
Corey Ballou,2010年

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中删除。


6
<?=$a; ?>

是以下操作的快捷方式:

<?php echo $a; ?>


3

我希望它不会被弃用。尽管<? blah code ?>显然没有必要使用XHTML进行编写和混淆<?=,但出于明显的原因,编写并没有这样做。不幸的是,我没有使用它,因为short_open_tag似乎越来越被禁用。

更新:我现在<?=再次使用,因为默认情况下PHP 5.4.0启用了它。参见http://php.net/manual/en/language.basic-syntax.phptags.php

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.