Memo sự khác biệt giữa toán tử == và === trong PHP. Khi làm dự án mình đã gặp phải bug khi không hiểu sao khi so sánh trong biểu thức điều kiện của if mãi không ra kết quả, và khi tìm hiểu kỹ thì mới biết lý do là…
Sự khác biệt giữa == và === trong PHP
Sự khác biệt giữa == và === trong PHP, đó chính là ở chỗ chúng ta chỉ xem xét tới giá trị, hay là xem xét tới cả kiểu của giá trị trong phép so sánh.
Cụ thể hơn thì toán tử ==
sẽ chuyển đổi giá trị 2 vế về cùng kiểu rồi so sánh giá trị, trong khi toán tử ===
sẽ không chuyển đổi kiểu mà so sánh cả giá trị lẫn kiểu của giá trị giữa 2 vế đó.
Lấy ví dụ, với hai biến a và b dưới đây, tuy biến a thuộc kiểu string và biến b thuộc kiểu int, nhưng vì chúng cùng có giá trị chuyển đổi bằng 8 nên kết quả so sánh bằng toán tử ==
sẽ trả về true:
$a = "8";
$b = 8;
if($a == $b){
echo "true";
}else{
echo "false";
}
//true
Trong khi đó nếu dùng toán tử ===
thì kết quả false sẽ được trả về:
$a = "8";
$b = 8;
if($a === $b){
echo "true";
}else{
echo "false";
}
//false
Sử dụng == và === trong PHP với các trường hợp cụ thể
Trường hợp | Kết quả |
---|---|
$a == $b | true nếu $a bằng $b sau khi chuyển đổi về cùng kiểu |
$a === $b | true nếu $a bằng và cùng kiểu với $b. |
$a != $b | true nếu $a không bằng $b sau khi chuyển đổi về cùng kiểu |
$a !== $b | true nếu $a không bằng hoặc cùng kiểu với $b |
$a <> $b | true nếu $a không bằng $b sau khi chuyển đổi về cùng kiểu |
Đặc biệt khi so sánh giữa 2 giá trị khác kiểu, chúng ta hay bị nhầm lẫn nếu không nắm rõ được sự khác biệt giữa == và === trong PHP như trên, nên chúng ta nên sử dụng ===
thay cho ==
khi so sánh trong PHP.
Kết bài
Trên đây Kiyoshi đã trình bày sự khác biệt giữa == và === trong PHP rồi. Mong kiến thức này sẽ có ích cho mọi người.
Bình luận