Dấu nháy đơn và dấu ngoặc kép được xử lý một chút khác nhau trong PHP. Đọc để xem sự khác biệt trong cách chúng được đánh giá.
Dấu nháy đơn
Dấu nháy đơn có xu hướng phân tích mọi thứ theo nghĩa đen hơn. Ví dụ: hãy làm như sau:
$ test = "BOOOM"; echo '$ test'
Tên biến, khi đặt trong dấu nháy đơ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ự in từ chạy này như là một chương trình php đơn giản:
$ test
Chỉ có 2 kịch bản mà tôi có thể nghĩ đến nơi thông tin thực sự được phân tích cú pháp trong một chuỗi được trích dẫn duy nhất. Đầu tiên, để hiển thị một ký tự được trích dẫn, nó phải được bắt đầu bởi 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 một dấu gạch chéo ngược khác. Thí dụ:
echo 'trích dẫn duy nhất: \' '; echo '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 cú pháp cho bạn. Khi chạy giữa dấu ngoặc kép:
$ test = "BOOOM"; echo "$ test"
Nó đưa ra giá trị biến thực tế:
BOOOM
Bây giờ, đôi khi bạn sẽ chạy vào một tình huống mà tên biến mà bạn đang cố gắng xuất ra là do không được phân tích cú pháp chính xác vì một số ký tự xung quanh.
$ test = "BOOOM"; echo "$ test";
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 là $ test, và vì nó không tồn tại, không có gì là đầu ra. Cách thích hợp để xuất ra giá trị theo sau là 'ed' sẽ là:
$ test = "BOOOM"; echo "{$ test} ed";
Bằng cách gói nó trong dấu ngoặc nhọn, nó cho phép PHP biết nơi biến bắt đầu và dừng, 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ể. Mỗi dấu nháy đơn đều 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 về vật chấ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.