2010-01-07 25 views
72
<?php 

$a=1; 

?> 
<?=$a;?> 

¿Qué significa exactamente <?=?¿Qué significa '<? =' En PHP?

+0

Nota al margen: Esto se usa ampliamente en las vistas ASP.NET MVC. – Omar

+2

http://stackoverflow.com/questions/1963901/what-does-this-symbol-mean-in-php/1963912 –

+6

Tenga en cuenta que ';' es redundante; como las respuestas sugieren, esta etiqueta corta se expande a un "eco" con un punto y coma agregado al final, según los [documentos php] (http://php.net/manual/en/language.basic-syntax.phpmode. php). –

Respuesta

107

Es una abreviatura de <?php echo $a; ?>.

Está habilitado por defecto since 5.4 independientemente de php.ini configuraciones.

+0

¿Está disponible en php 7? – zachdyer

31

Es una abreviatura para esto:

<?php echo $a; ?> 

Se llaman las etiquetas cortas; vea el ejemplo # 2 en el documentation.

+10

Tenga en cuenta que todos los servidores no admiten etiquetas cortas como se menciona en la respuesta a continuación. Requieren que php.ini tenga 'short_open_tag = On' –

5
<?=$a; ?> 

es un acceso directo para:

<?php echo $a; ?> 
7

<?= $a ?> es lo mismo que <? echo $a; ?>, simplemente la abreviatura de conveniencia.

8

Ya que no añadiría ningún valor a repetir que significa echo, pensé que le gustaría ver lo que significa exactamente en 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 
     ) 
) 

Usted puede utilizar este código para probar usted mismo:

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

Desde el List of Parser Tokens, here is what T_OPEN_TAG_WITH_ECHO links to.

+0

El token no pudo darme más detalles. – user198729

1

Espero que no se desaproveche. Mientras que escribir <? blah code ?> es bastante innecesario y confuso con XHTML, <?= no lo es, por razones obvias. Desafortunadamente no lo uso, porque short_open_tag parece estar deshabilitado cada vez más.

Actualización: Utilizo <?= de nuevo ahora, porque está habilitado por defecto con PHP 5.4.0. Ver http://php.net/manual/en/language.basic-syntax.phptags.php

1

A partir de PHP 5.4.0, <?= ?> están siempre disponibles, incluso sin la short_open_tag establecer en php.ini.

Además, a partir de PHP 7.0, las etiquetas ASP: <%, %> y la etiqueta script <script language="php"> se eliminan de PHP.