Dấu ngoặc đơn và dấu ngoặc kép được xử lý một chút khác nhau trong PHP. Đọc để thấy sự khác biệt trong cách họ được đánh giá.
Dấu nháy đơn
Trích dẫn đơn có xu hướng phân tích mọi thứ theo nghĩa đen hơn nhiều. Ví dụ: lấy như sau:
$ test = "BOOOM"; tiếng vang '$ test'
Tên biến, khi được đặt trong dấu ngoặc đơn không được phân tích cú pháp thành giá trị thực của nó. Đây là những gì thực sự được in từ việc chạy này như là một chương trình php đơn giản:
$ kiểm tra
Chỉ có 2 kịch bản mà tôi có thể nghĩ về nơi thông tin thực sự được phân tích cú pháp trong một chuỗi trích dẫn. Đầu tiên, để hiển thị một ký tự được trích dẫn, nó phải được bắt đầu bằng dấu gạch chéo ngược. Nếu không, nó sẽ được hiểu là kết thúc chuỗi của bạn. Thứ hai, để hiển thị dấu gạch chéo ngược, nó phải được bắt đầu bằng dấu gạch chéo ngược khác. Thí dụ:
echo 'trích dẫn đơn: \' '; tiếng vang 'dấu gạch chéo ngược: \\';
Dấu ngoặc kép
Dấu ngoặc kép có xu hướng phân tích mọi thứ cho bạn. Khi chạy giữa dấu ngoặc kép:
$ test = "BOOOM"; tiếng vang "$ test"
Nó xuất giá trị biến thực tế:
SÁCH
Bây giờ, đôi khi bạn sẽ chạy vào một kịch bản trong đó tên biến bạn đang cố xuất ra không được phân tích cú pháp chính xác do một số ký tự xung quanh.
$ test = "BOOOM"; tiếng vang "$ đã kiểm tra";
Bạn nghĩ gì về đầu ra ở đây? Câu trả lời là không có gì. PHP tìm kiếm một biến có tên $ được kiểm tra và vì nó không tồn tại, nên không có gì là đầu ra. Cách thích hợp để xuất giá trị theo sau 'ed' sẽ là:
$ test = "BOOOM"; tiếng vang "{$ test} ed";
Bằng cách gói nó trong dấu ngoặc nhọn, nó cho PHP biết biến bắt đầu và dừng ở đâu, cho phép nó đánh giá đúng biến.
Chênh lệch tốc độ
Tôi đã chạy một vài bài kiểm tra điểm chuẩn đơn giản để đánh giá một số kịch bản khác biệt, sự khác biệt về tốc độ giữa 2 là không đáng kể. Các trích dẫn đơn lẻ nhanh hơn một chút do thực tế là nó không phải tìm kiếm một biến và sau đó phân tích giá trị, nhưng tôi chưa bao giờ gặp phải một kịch bản mà nó tạo ra đủ sự khác biệt. Sử dụng bất cứ điều gì phù hợp với nhu cầu hiện tại của bạn.
