Що означає "<? =" У 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.ini матиshort_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;
}

З Список Parser лексем , ось що T_OPEN_TAG_WITH_ECHO посилання .


Маркер не зміг сказати мені детальніше.
користувач198729


7

Станом на PHP 5.4.0, <?= ?> вони завжди доступні навіть без встановленого тега short_open_tag у php.ini.

Крім того, з PHP 7.0 теги ASP: <%, %> та тег сценарію <script language="php"> видаляються з PHP.




3

Я сподіваюся, що це не застаріло. Хоча писання <? blah code ?>є досить непотрібним та заплутаним у XHTML <?=, з очевидних причин це не так. На жаль, я не користуюсь цим, оскільки, здається, короткий_оп_таг дедалі більше відключається.

Оновлення: я використовую <?=знову, тому що це за замовчуванням увімкнено 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.