thepcafe

Giới thiệu toán tử Double not (!!) trong PHP

Xin giới thiệu với anh em một toán tử rất lạ là !! (Double not). Phủ định của phủ định là khẳng định, vậy tại sao không dùng phủ định hoặc khẳng định thôi là đủ, lại còn sinh ra thêm phủ định của phủ định làm gì?

Toán tử "NOT NOT" hay toán tử Double not(!!) trong PHP đơn giản là trả về tính đúng sai của giá trị biến hoặc biểu thức. Nói một cách đơn giản thì, toán tử not (!) đầu tiên sẽ phủ định giá trị của biểu thức, toàn tử not (!) thứ hai tiếp tục phủ định giá trị được trả về sau khi thực hiện toán tử trước đó. Toán tử (!!) trả về giá trị kiểu Boolean. Nếu dùng !! cho biểu thức hay biến có giá trị true thì sẽ có kết quả là true và biểu thức hay biến có giá trị false thì kết quả trả về sẽ là false. Dùng toán tử Double not(!!) làm cho việc đọc code dễ dàng hơn, bên cạnh đó chúng ta có thể chắc chắn giá trị trả về có dữ liệu là kiểu Boolean.

Ví dụ 1:

$a = 1; 
// Use double not operator 
$a = !!$a; 
// Display the value  
// of variable a. 
echo $a; 
//Kết quả in ra là 1;

Sự khác nhau giữa toán tử phủ định NOT(!) và Double NOT(!!) trong PHP:

Toán tử phủ định Not (!) bổ sung về mặt toán học hoặc phủ định giá trị Boolean của dữ liệu. Ví dụ cho biến a có giá trị $a = True, thì toán tử phủ định NOT (!) áp đặt giá trị trả về !$a là False. Trong khi toán tử Double NOT (!!) chỉ trả về giá trị đã được ép thành kiểu Boolean hoặc tính đúng sai của giá trị biến. Do đó !!$a luôn trả về TRUE.

Dưới đây là một ví dụ khác về toán tử Double not (!!).

Ví dụ 2:

$t = 10; 
// Check condition 
if ($t !== 10) 
    echo "This is NOT operator!"; 
elseif (!!$t) 
    echo "This is Double NOT operator!"; 
else
    echo "Finish!"; 
//Đoạn này sẽ in ra This is Double NOT operator! 

Đọc đến đây nếu anh em vẫn còn hoang mang chưa hiểu thì có thể rút gọn 1 câu đơn giả là toán tử (!!) sẽ ép kiểu giá trị trả về là kiểu Boolean.

Thêm một ví dụ đơn giản dễ hiểu hơn nhé:

public function duocPhepLayChong(): bool
{
    return !! ($this->gage >= 18);
}

Ví dụ Trang gặp anh tên Hùng nào đó rồi đem lòng yêu mến, sau đó Trang lên phường để xin xác nhận được lấy chồng. Phường sẽ kiểm tra xem Trang được phép lấy chồng hay không bằng cách gọi phương thức duocPhepLayChong() với đối tượng Trang, phương thức này kiểm tra tuổi của Trang đã đủ 18 hay chưa. Và câu trả lời sẽ là có hoặc không.

Tags

Có thể bạn quan tâm

Sự khác nhau giữa define() và const

Từ bản PHP 5.3, có thể dùng hai cách để định nghĩa một biến hằng số: Có thể dùng