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

159
<?php

$a=1;

?>
<?=$a;?>

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

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

Ответы:

229

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

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

BalusC
источник
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
9

<?= $a ?>так же, как <? echo $a; ?>просто сокращение для удобства.

Джеффри Эйлсворт
источник
7

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

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

Гай Гракх
источник
6
<?=$a; ?>

это ярлык для:

<?php echo $a; ?>
Inspire
источник
3

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

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

анти герой
источник