PHP:Tại sao === lại nhanh hơn ==

Bài từ dự án mở Ứng dụng mẫu.


Chấm điểm ( 9 votes )
2.67 / 5

=== có nghĩa là đồng nhất.

== có nghĩa là bằng, theo giá trị.

Ví dụ: Kết quả là FALSE

  1. $a = 123;
  2. $b = '123';
  3. if($a === $b)
  4. {
  5.     exit('TRUE');
  6. }
  7. else
  8. {
  9.     exit('FALSE');
  10. }

Nếu ta thay == thành === thì kết quả sẽ là FALSE, lỳ do là vì: kiểu dữ liệu không giống nhau mặc dù giá trị là bằng nhau.

Đặt mình vào vị trí của người tạo ngôn ngữ PHP (tức là viết bằng C), việc so sánh sẽ như sau:

  • Lấy kiểu dữ liệu và giá trị của phần tử bên trái
  • Nếu là đồng nhất (===) thì so sánh ngay với giá trị của phần tử bên phải
  • Nếu là bằng (==) thì phải gọi hàm để kiểm tra kiểu hoặc có thể thao tác chuyển dữ liệu của phần tử bên phải. Như vậy sẽ tốn thêm thời gian cho việc kiểm tra dữ liệu. Với trường hợp trong ví dụ, $a sẽ là kiểu int, sau đó, phải thực hiện thao tác chuyển kiểu của $b sang int

Ngoài ra, đồng nhất còn có ích trong trường hợp dùng hàm strpos(): kết quả là TRUE

  1. $a = '#123';
  2.  
  3. if(strpos($a, '#') !== false)
  4. {
  5.     exit('TRUE');
  6. }
  7. else
  8. {
  9.     exit('FALSE');
  10. }

Nếu thay đổi !== thành != thì kết quả sẽ không đúng như ý muốn. Ngay trong trường hợp này, kí tự # nằm đầu tiên, giá trị của vị trí sẽ là 0. Trong PHP, 0 là FALSE!

Thảm khảo: PHP Operators Comparison


Beehost Vietnam
Beehost Vietnam


Web 2.0 Việt Nam
Thắng cảnh đẹp

(©) Xin hãy ghi rõ nguồn gốc nếu bạn copy những bài viết từ www.UngDungMau.com
Xin cảm ơn!

Vì spam nhiều hơn đóng góp nên bạn phải đăng ký tài khoản nếu muốn sửa bài