Что означает «<? =» В PHP?


159
<?php

$a=1;

?>
<?=$a;?>

Что <?=именно означает?


Примечание: это широко используется в представлениях ASP.NET MVC.
Омар


12
Обратите внимание, что ;это избыточно; поскольку ответы предполагают, что этот короткий тег расширяется до точки echoс точкой с запятой, добавленной в конце согласно документам php .
не только йети

Ответы:


229

Это сокращение для <?php echo $a; ?>.

Он включен по умолчанию с 5.4 независимо от php.iniнастроек.


1
Это доступно в php 7?
zachdyer

4
Обратите внимание, что последняя точка с запятой не требуется. Но если по какой-либо причине вам нужно вернуться к классическим тегам, простого поиска / замены <?=для всего <?php echoпроекта будет недостаточно. Во всяком случае, на сегодняшний день, я надеюсь, что у вас, ребята, нет рабочих серверов под управлением PHP <5.6, так как эти версии больше не поддерживаются ( поддерживаемые версии PHP ).
TwystO

47

Это сокращение для этого:

<?php echo $a; ?>

Они называются короткими метками; см. пример № 2 в документации .


12
Обратите внимание, что все серверы не поддерживают короткие теги, как указано в ответе ниже. Им нужен php.inishort_open_tag = On
Кори Баллу

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


7

Начиная с PHP 5.4.0, <?= ?> они всегда доступны даже без набора short_open_tag в php.ini.

Кроме того, начиная с PHP 7.0, теги ASP: <%, %> и тег script <script language="php">удалены из PHP.




3

Я надеюсь, что это не осуждается. Хотя написание <? blah code ?>XXTML довольно ненужно и его можно спутать <?=, по понятным причинам это не так. К сожалению, я им не пользуюсь, потому что short_open_tag кажется отключенным все больше и больше.

Обновление: я <?=снова использую сейчас, потому что он включен по умолчанию с PHP 5.4.0. Смотрите http://php.net/manual/en/language.basic-syntax.phptags.php

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.