Hướng dẫn dùng boolean means trong PHP

Kiểu logic là kiểu dữ liệu chỉ chứa giá trị đúng và sai. Trong PHP, kiểu logic có tên gọi bool hoặc boolean tùy tình huống sử dụng. Kiểu bool trong PHP là kết quả thực hiện các phép toán so sánh, các phép toán logic, cũng như một số hàm.

Kiểu logic trong PHP

Kiểu logic là kiểu dữ liệu chỉ chứa hai giá trị: true và false.

Kiểu logic trong PHP có hai tên gọi: bool và boolean. Tên gọi bool dùng trong chỉ báo kiểu của hàm. Tên gọi boolean được dùng trong giá trị trả về của hàm gettype[]. Trong phép toán chuyển đổi kiểu có thể sử dụng cả [bool] và [boolean].

Giá trị true và false không phân biệt hoa/thường. Nghĩa là bạn viết true/TRUE/True hay false/FALSE/False đều được.

Trong các lệnh xuất dữ liệu với kiểu logic, giá trị true được biểu diễn là 1, còn giá trị false được biểu diễn là một xâu rỗng.

php > $a = true;
php > $b = True;
php > $c = TRUE;
php > echo $a, ' ', $b, ' ', $c;
1 1 1
php > $d = false;
php > echo $d;
php >

PHP thực hiện tự động chuyển đổi từ các giá trị khác về boolean như sau:

  • Số nguyên khác 0 chuyển thành true; Số 0 chuyển thành false.
  • Số thực bằng 0.0 chuyển thành false, còn lại là true.
  • Mọi chuỗi không rỗng chuyển thành true; Chuỗi rỗng “” hoặc ” chuyển thành false.
  • Giá trị NULL tương đương với false.
  • Mảng không có phần tử nào tương đương với false.
  • Một object rỗng [không có giá trị hoặc phương thức nào] tương đương với false.

Với quy tắc chuyển đổi như trên, bạn có thể trực tiếp sử dụng các giá trị khác kiểu bool trong biểu thức logic [ví dụ, cho vòng lặp và cấu trúc rẽ nhánh]. Đây là điều gần giống trong C/C++ nhưng xa lạ hơn với C#.

Để kiểm tra giá trị của một biến có phải kiểu bool/boolean hay không có thể sử dụng hàm is_bool[$var].

Để chuyển đổi các kiểu dữ liệu khác về bool/boolean có thể sử dụng các phép chuyển đổi kiểu [type casting] như [bool], [boolean] hoặc sử dụng hàm chuyển đổi boolval[$var].

Kiểu boolean là kết quả trả về của các phép toán so sánh của các kiểu số và string mà bạn đã học: so sánh số với số, so sánh chuỗi với chuỗi.

Bạn cũng đã gặp một loạt hàm trả giá trị kiểu boolean:

  • Các hàm kiểm tra kiểu: is_int[], is_double[], is_float[], is_bool[], is_string[].
  • Hàm kiểm tra sự tồn tại của biến: isset[].

Nếu cần tạo ra biểu thức logic phức tạp hơn, PHP cung cấp các phép toán logic.

Các phép toán logic

Đối với dữ liệu kiểu bool, PHP định nghĩa sẵn các phép toán riêng biệt, gọi là các phép toán logic. Các phép toán logic cho phép ghép nối các giá trị logic thành những biểu thức phức tạp.

Giống như trong toán học, PHP định nghĩa sẵn các phép toán logic sau:

Phép logic and cho kết quả true khi và chỉ khi cả hai toán hạng có giá trị true. Trong PHP, phép toán logic and được biểu diễn bằng cụm ký tự && hoặc từ khóa and. Ví dụ:

php> $a = true;
php> $b = false;
php> $c = $a && $b; // cho false
php> $d = $a and $b; // cho false

Từ khóa trong PHP không phân biệt hoa/thường.

Phép toán logic and trong PHP có đặc điểm: nếu biểu thức bên trái phép toán có giá trị false, PHP sẽ không tính toán biểu thức bên phải dấu phép toán nữa [vì kết quả chắc chắn là false]. Đặc điểm này của phép toán and được gọi là tính đoản mạch [short-circuit].

Đặc điểm này tạo ra một kỹ thuật đặc biệt trong PHP, gọi là kỹ thuật đoản mạch [short-circuiting].

Ví dụ lệnh $result = $flag and mysql_connect[]; vận dụng kỹ thuật này để kiểm soát việc kết nối cơ sở dữ liệu. Nếu $flag là false thì lệnh kết nối [tiêu tốn nhiều tài nguyên] sẽ không được thực hiện nữa. Kỹ thuật đoản mạch này giúp viết lệnh ngắn gọn không cần đến cấu trúc lặp.

Phép toán logic or cho kết quả false chỉ khi cả hai toán hạng cùng có giá trị false. Trong PHP, phép toán logic or được biểu diễn bằng cụm || hoặc từ khóa or. Ví dụ:

php> $a = true;
php> $b = false;
php> $c = $a || $b; // cho true
php> $d = $a or $b; // cho true

Phép toán logic or cũng có tính đoản mạch: nếu biểu thức ở vế trái là true thì không thực hiện vế phái nữa, đồng thời trả luôn kết quả của cả biểu thức là true.

Kỹ thuật này có thể sử dụng, ví dụ, trong việc mở file: $result = fopen[$filename] or exit[];

Phép toán logic xor trả lại kết quả true nếu chỉ một trong hai toán hạng là true. Phép toán xor còn được gọi là phép or loại trừ. Chỉ khi trạng thái của hai toán hạng khác nhau thì biểu thức nhận giá trị true.

Trong PHP, phép toán xor được biểu diễn bằng từ khóa xor.

php> $a = true;
php> $b = false;
php> $c = $a xor $b; // true

Phép toán phủ định đảo ngược giá trị của biểu thức logic: true thành false, false thành true. Phép toán phủ định logic trong PHP được biểu diễn bởi ký tự !.

php> $a = false;
php> $b = !$a;// thành true
php> $c = !$b; // thành false

Các phép toán so sánh, type juggling

PHP định nghĩa sẵn các phép toán so sánh mà bạn đã gặp:

Ký hiệu phép toánTên gọi
> Lớn hơn
>= Lớn hơn hoặc bằng
< Nhỏ hơn
, >=, $b = '1000'; // đây là một chuỗi php> echo $a == $b; // kết quả là 1 [true] 1

[2] Phép so sánh ===, gọi là so sánh chặt [strict comparison] hoặc so sánh đồng nhất [identity], không thực hiện type juggling. Do vậy, nếu hai giá trị khác kiểu thì luôn cho kết quả so sánh là false.

php > $a = 1000;
php > $b = ‘1000’;
php > echo $a === $b; // kết quả là false
php >

[3] Tương tự như vậy, phép so sánh khác != hoặc [còn gọi là phép toán inequality] thực hiện type juggling trước khi so sánh. Trong khi đó phép toán !== [phép toán not identical] không thực hiện type juggling.

php > $a = 1000;
php > $b = '1000';
php > echo $a !== $b;
1
php > echo $a != $b;
php >

Như vậy, hai phép toán identical [===] và not identical [!==] mới thực sự tương đương với các phép toán == và != trong C.

Kết luận

Trong bài học này chúng ta đã xem xét chi tiết về kiểu dữ liệu logic bool/boolean trong PHP.

  • Kiểu dữ liệu này chỉ có hai giá trị true và false.
  • PHP tự động chuyển đổi giá trị của các kiểu dữ liệu khác về true hoặc false theo một số quy tắc đơn giản.
  • Boolean trong PHP là kết quả thực hiện các phép so sánh và một số hàm.
  • Có thể sử dụng các phép toán logic and, or, xor, và phủ định trên các giá trị/biểu thức boolean để tạo ra các biểu thức logic phức tạp hơn.
  • Các phép toán so sánh trong PHP hoạt động hơi khác biệt với việc áp dụng type juggling.

+ Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.
+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.
+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.
Cảm ơn bạn!

Chủ Đề