2010-01-07 22 views
72
<?php 

$a=1; 

?> 
<?=$a;?> 

Was bedeutet <?= genau?Was bedeutet '<? =' In PHP?

+0

Randnotiz: Dies wird häufig in ASP.NET MVC-Ansichten verwendet. – Omar

+2

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

+6

Beachten Sie, dass das ';' redundant ist; Wie die Antworten nahelegen, dehnt sich dieses short-tag zu einem "echo" aus, wobei ein Semikolon am Ende hinzugefügt wird, wie in den [php-Dokumenten] (http://php.net/manual/en/language.basic-syntax.phpmode) beschrieben. php). –

Antwort

107

Es ist eine Kurzschrift für <?php echo $a; ?>.

Es ist standardmäßig since 5.4 unabhängig von php.ini Einstellungen aktiviert.

+0

Ist es in PHP 7 verfügbar? – zachdyer

31

Es ist eine Abkürzung für diese:

<?php echo $a; ?> 

Sie short-Tags genannt werden; siehe Beispiel # 2 in der documentation.

+10

Bitte beachten Sie, dass alle Server keine kurzen Tags unterstützen, wie in einer Antwort unten erwähnt. Sie benötigen php.ini um 'short_open_tag = On' zu haben. –

5
<?=$a; ?> 

ist eine Abkürzung für:

<?php echo $a; ?> 
7

<?= $a ?> die gleiche wie <? echo $a; ?> ist, nur eine Abkürzung für die Bequemlichkeit.

8

Da es keinen Wert hinzufügen würde zu wiederholen, dass es bedeutet echo, ich dachte, Sie würden gerne sehen, was in PHP bedeutet genau das:

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

Sie diesen Code verwenden können, um zu testen it yourself:

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

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

+0

Das Token konnte mir keine weiteren Details mitteilen. – user198729

1

Ich hoffe, es wird nicht veraltet. Während Schreiben <? blah code ?> ist ziemlich unnötig und verwechselbar mit XHTML, <?= ist nicht, aus offensichtlichen Gründen. Leider benutze ich es nicht, da short_open_tag mehr und mehr deaktiviert scheint.

Update: Ich verwende jetzt wieder <?=, weil es standardmäßig mit PHP 5.4.0 aktiviert ist. Siehe http://php.net/manual/en/language.basic-syntax.phptags.php

1

Ab PHP 5.4.0, <?= ?> sind immer verfügbar, auch ohne den short_open_tag in php.ini gesetzt.

Darüber, wie von PHP 7.0, die ASP-Tags: <%, %> und dem Script-Tag <script language="php"> aus PHP entfernt.