'<? =' Nghĩa là gì trong PHP?


159
<?php

$a=1;

?>
<?=$a;?>

Không gì <?=có nghĩa là chính xác?


Lưu ý bên lề: Điều này được sử dụng rộng rãi trong các khung nhìn ASP.NET MVC.
Omar


12
Lưu ý rằng ;là dư thừa; vì các câu trả lời cho thấy thẻ ngắn này mở rộng thành echomột dấu chấm phẩy được thêm vào cuối, theo các tài liệu php .
không chỉ là

Câu trả lời:


229

Đó là một tốc ký cho <?php echo $a; ?>.

Nó được bật theo mặc định kể từ 5.4 bất kể php.inicài đặt.


1
Có sẵn trong php 7 không?
zachdyer

4
Lưu ý rằng dấu chấm phẩy cuối cùng là không bắt buộc. Nhưng nếu vì bất kỳ lý do gì, bạn cần quay lại các thẻ cổ điển, một tìm kiếm / thay thế <?=trong toàn dự án đơn giản <?php echosẽ không đủ. Dù sao, cho đến hôm nay tôi hy vọng các bạn không có bất kỳ máy chủ sản xuất nào chạy PHP <5.6 vì các phiên bản này không còn được duy trì nữa ( Phiên bản được hỗ trợ của PHP ).
TwystO

47

Đây là một tốc ký cho việc này:

<?php echo $a; ?>

Chúng được gọi là thẻ ngắn; xem ví dụ # 2 trong tài liệu .


12
Xin lưu ý rằng tất cả các máy chủ không hỗ trợ các thẻ ngắn như được đề cập trong câu trả lời dưới đây. Họ yêu cầu php.ini phải cóshort_open_tag = On
Corey Ballou

17

Vì nó sẽ không thêm bất kỳ giá trị nào để lặp lại ý nghĩa của nó echo, tôi nghĩ rằng bạn muốn xem chính xác nghĩa của PHP là gì:

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

Bạn có thể sử dụng mã này để tự kiểm tra:

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

Từ Danh sách các Trình phân tích cú pháp , đây là những gì T_OPENiah_WITH_ECHO liên kết đến .


Mã thông báo không cho tôi biết thêm chi tiết.
dùng198729


7

Kể từ phiên bản PHP 5.4.0, <?= ?> luôn có sẵn ngay cả khi không có short_open_tag được đặt trong php.ini.

Hơn nữa, kể từ PHP 7.0, các thẻ ASP: <%, %> và thẻ script <script language="php"> được xóa khỏi PHP.




3

Tôi hy vọng nó không bị phản đối. Mặc dù viết <? blah code ?>là khá không cần thiết và khó hiểu với XHTML, nhưng <?=không, vì những lý do rõ ràng. Thật không may, tôi không sử dụng nó, bởi vì short_open_tag dường như ngày càng bị vô hiệu hóa.

Cập nhật: Bây giờ tôi sử dụng <?=lại, vì nó được bật theo mặc định với PHP 5.4.0. Xem http://php.net/manual/en/lingu.basic-syntax.phptags.php

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.