web-dev-qa-db-fra.com

Que signifie '<? =' En PHP?

<?php

$a=1;

?>
<?=$a;?>

Qu'est-ce que <?= veut dire exactement?

134
user198729

C'est un raccourci pour <?php echo $a; ?>.

Il est activé par défaut depuis 5.4 indépendamment de php.ini paramètres.

196
BalusC

C'est un raccourci pour cela:

<?php echo $a; ?>

Ils s'appellent des balises courtes; voir l'exemple n ° 2 dans la documentation .

43
Will Vousden

Puisqu'il n'ajoute aucune valeur à répéter que cela signifie echo, j'ai pensé que vous voudriez voir ce que signifie PHP exactement:

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
        )
)

Vous pouvez utiliser ce code pour le tester vous-même:

$tokens = token_get_all('<?=$a;?>');
print_r($tokens);
foreach($tokens as $token){
    echo token_name((int) $token[0]), PHP_EOL;
}

À partir de Liste des jetons d’analyseur , voici ce à quoi T_OPEN_TAG_WITH_ECHO est lié .

14
Gordon

<?= $a ?> est le même que <? echo $a; ?>, juste un raccourci pour plus de commodité.

8
Jeffrey Aylesworth
<?=$a; ?>

est un raccourci pour:

<?php echo $a; ?>
6
Inspire

À partir de PHP 5.4.0, <?= ?> sont toujours disponibles même sans le short_open_tag défini dans le fichier php.ini.

De plus, à partir de PHP 7.0, le ASP tags: <%, %> et la balise de script <script language="php"> sont supprimés de PHP.

4
Gaius Gracchus

C'est un raccourci pour <?php echo $a; ?> si short_open_tags sont activés. Réf.: http://php.net/manual/en/ini.core.php

4
Matteo Riva

J'espère que ça ne devient pas obsolète. En écrivant <? blah code ?> est assez inutile et source de confusion avec XHTML, <?= n'est pas, pour des raisons évidentes. Malheureusement, je ne l'utilise pas, car short_open_tag semble être de plus en plus désactivé.

Mise à jour: J'utilise bien <?= _ _ encore une fois, car il est activé par défaut avec PHP 5.4.0. Voir http://php.net/manual/fr/language.basic-syntax.phptags .php

3
antihero