So sánh bằng giá trị và kiểu dữ liệu trong PHP
Giả sử bạn muốn so sánh sao cho một số
trong dấu ngoặc kép không bằng với chính số đó
nhưng không có dấu ngoặc kép. Nói cách khác, bạn muốn
so sánh sao cho việc so sánh không chỉ dựa trên
giá trị, mà còn dựa trên kiểu dữ liệu. Để làm điều này,
thay vì sử dụng toán tử ==, bạn nên sử dụng
toán tử ===. Phép so sánh với toán tử này
được gọi là nghiêm ngặt (strict).
Xem ví dụ:
<?php
if ('3' === 3) {
echo '+++';
} else {
echo '---'; // đoạn này sẽ chạy, vì các giá trị không bằng nhau về kiểu dữ liệu
}
?>
Còn khi so sánh hai chuỗi '3'
màn hình sẽ hiển thị '+++':
<?php
if ('3' === '3') {
echo '+++'; // đoạn này sẽ chạy
} else {
echo '---';
}
?>
Tương tự như khi so sánh các số:
<?php
if (3 === 3) {
echo '+++'; // đoạn này sẽ chạy
} else {
echo '---';
}
?>
Sự khác biệt giữa hai toán tử thể hiện rõ chính xác khi các giá trị giống nhau, nhưng kiểu dữ liệu khác nhau. Trong các trường hợp khác, những toán tử này hoạt động giống hệt nhau. Ví dụ, khi so sánh các số khác nhau, dĩ nhiên sẽ xuất hiện dấu trừ:
<?php
if (2 === 3) {
echo '+++';
} else {
echo '---'; // đoạn này sẽ chạy
}
?>
Hiện nay trong PHP, việc sử dụng so sánh nghiêm ngặt ở mọi nơi đã được chấp nhận rộng rãi. Người ta cho rằng trong trường hợp này, mã nguồn ít bị lỗi hơn.
Không chạy mã, hãy xác định điều gì sẽ được hiển thị trên màn hình:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Không chạy mã, hãy xác định điều gì sẽ được hiển thị trên màn hình:
<?php
$test1 = '3';
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Không chạy mã, hãy xác định điều gì sẽ được hiển thị trên màn hình:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 == $test2) {
echo '+++';
} else {
echo '---';
}
?>
Không chạy mã, hãy xác định điều gì sẽ được hiển thị trên màn hình:
<?php
$test1 = 3;
$test2 = '3';
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>
Không chạy mã, hãy xác định điều gì sẽ được hiển thị trên màn hình:
<?php
$test1 = 3;
$test2 = 3;
if ($test1 === $test2) {
echo '+++';
} else {
echo '---';
}
?>