Apa arti '<? =' Dalam PHP?

159
<?php

$a=1;

?>
<?=$a;?>

Apa <?=sebenarnya yang dimaksud?

pengguna198729
sumber
Catatan: Ini digunakan secara luas dalam tampilan ASP.NET MVC.
Omar
12
Perhatikan bahwa ;itu berlebihan; karena jawaban menyarankan tag pendek ini diperluas ke echodengan tanda koma yang ditambahkan di akhir, sesuai dengan dokumen php .
not-just-yeti

Jawaban:

229

Ini singkatan untuk <?php echo $a; ?>.

Ini diaktifkan secara default sejak 5.4 terlepas dari php.inipengaturan.

BalusC
sumber
1
Apakah tersedia di php 7?
zachdyer
4
Perhatikan bahwa semi-colon akhir tidak diperlukan. Tetapi jika, untuk alasan apa pun, Anda perlu kembali ke tag klasik, pencarian / penggantian proyek-lebar sederhana <?=untuk tidak <?php echoakan cukup. Pokoknya pada hari ini saya harap kalian tidak memiliki server produksi yang menjalankan PHP <5.6 karena versi ini tidak dikelola lagi ( Versi yang Didukung PHP ).
TwystO
47

Ini adalah singkatan untuk ini:

<?php echo $a; ?>

Itu disebut tag pendek; lihat contoh # 2 dalam dokumentasi .

Will Vousden
sumber
12
Harap dicatat bahwa semua server tidak mendukung tag pendek seperti yang disebutkan dalam jawaban di bawah ini. Mereka membutuhkan php.ini untuk memilikinyashort_open_tag = On
Corey Ballou
17

Karena itu tidak akan menambah nilai untuk mengulangi artinya echo, saya pikir Anda ingin melihat apa artinya dalam 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
        )
)

Anda dapat menggunakan kode ini untuk mengujinya sendiri:

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

Dari Daftar Token Parser , inilah tautan T_OPEN_TAG_WITH_ECHO .

Gordon
sumber
Token gagal memberi tahu saya detail lebih lanjut.
user198729
9

<?= $a ?>sama dengan <? echo $a; ?>, hanya singkatan untuk kenyamanan.

Jeffrey Aylesworth
sumber
7

Pada PHP 5.4.0, <?= ?> selalu tersedia bahkan tanpa set short_open_tag di php.ini.

Selanjutnya, pada PHP 7.0, Tag ASP: <%, %> dan tag skrip <script language="php"> dihapus dari PHP.

Gayus Gracchus
sumber
6
<?=$a; ?>

adalah jalan pintas untuk:

<?php echo $a; ?>
Mengilhami
sumber
3

Saya harap itu tidak ditinggalkan. Walaupun menulis <? blah code ?>tidak perlu dan membingungkan dengan XHTML, <?=tidak, karena alasan yang jelas. Sayangnya saya tidak menggunakannya, karena short_open_tag tampaknya semakin dinonaktifkan.

Pembaruan: Saya menggunakan <?=lagi sekarang, karena diaktifkan secara default dengan PHP 5.4.0. Lihat http://php.net/manual/en/language.basic-syntax.phptags.php

anti hero
sumber