Tóm tắt: trong hướng dẫn này, bạn sẽ tìm hiểu về câu lệnh if trong PHP và cách sử dụng nó để thực thi một khối mã theo điều kiện.
Giới thiệu về câu lệnh if trong PHP
Câu lệnh if
cho phép bạn thực thi một câu lệnh nếu một biểu thức đánh giá là true
. Dưới đây là cú pháp của câu lệnh if
:
<?php if ( biểu_thức ) câu_lệnh;
Trong cú pháp này, PHP đánh giá biểu thức trước. Nếu biểu thức đánh giá là true
, PHP thực thi câu lệnh. Trong trường hợp biểu thức đánh giá là false
, PHP bỏ qua câu lệnh.
Sơ đồ dưới đây mô tả cách hoạt động của câu lệnh if
:
Ví dụ sau sử dụng câu lệnh if
để hiển thị một thông báo nếu biến $is_admin
được đặt thành true
:
<?php $is_admin = true; if ($is_admin) echo 'Chào mừng, admin!';
Vì $is_admin
là true
, mã script sẽ xuất thông báo sau đây:
Chào mừng, admin!
Dấu ngoặc nhọn
Nếu bạn muốn thực thi nhiều câu lệnh trong khối if
, bạn có thể sử dụng dấu ngoặc nhọn để nhóm nhiều câu lệnh như sau:
<?php if ( biểu_thức ) { câu_lệnh1; câu_lệnh2; // thêm câu lệnh }
Ví dụ sau sử dụng câu lệnh if
để thực thi nhiều câu lệnh:
<?php $can_edit = false; $is_admin = true; if ( $is_admin ) { echo 'Chào mừng, admin!'; $can_edit = true; }
Trong ví dụ này, câu lệnh if
hiển thị một thông báo và thiết lập biến $can_edit
thành true
nếu biến $is_admin
là true
.
Đây là một thói quen tốt luôn sử dụng dấu ngoặc nhọn với câu lệnh if
ngay cả khi chỉ có một câu lệnh để thực thi như sau:
<?php if ( biểu_thức ) { câu_lệnh; }
Ngoài ra, bạn có thể sử dụng khoảng trắng giữa biểu thức và dấu ngoặc nhọn để làm cho mã code dễ đọc hơn.
Lồng câu lệnh if
Đó là có thể lồng một câu lệnh if
bên trong một câu lệnh if
khác như sau:
<?php if ( biểu_thức1 ) { // làm một cái gì đó if( biểu_thức2 ) { // làm những thứ khác } }
Ví dụ sau cho thấy cách lồng một câu lệnh if
trong một câu lệnh if
khác:
<?php $is_admin = true; $can_approve = true; if ($is_admin) { echo 'Chào mừng, admin!'; if ($can_approve) { echo 'Vui lòng phê duyệt các mục đang chờ duyệt'; } }
Nhúng câu lệnh if
vào HTML
Để nhúng một câu lệnh if
vào một tài liệu HTML, bạn có thể sử dụng cú pháp trên. Tuy nhiên, PHP cung cấp một cú pháp tốt hơn cho phép bạn kết hợp câu lệnh if với HTML một cách dễ nhìn:
<?php if ( biểu_thức) : ?>
<!-- mã HTML ở đây -->
<?php endif; ?>
Ví dụ sau sử dụng câu lệnh if
để hiển thị liên kết chỉnh sửa nếu $is_admin
là true
:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP if Statement Demo</title> </head> <body> <?php $is_admin = true; ?> <?php if ( $is_admin ) : ?> <a href="#">Chỉnh sửa</a> <?php endif; ?> <a href="#">Xem</a> </body> </html>
Vì $is_admin
là true
, mã script sẽ hiển thị liên kết chỉnh sửa. Nếu bạn thay đổi giá trị của $is_admin
thành false
, bạn sẽ không thấy liên kết chỉnh sửa trong kết quả.
Một lỗi phổ biến với câu lệnh if trong PHP
Một lỗi phổ biến mà bạn có thể gặp là sử dụng sai toán tử trong câu lệnh if
. Ví dụ:
<?php $checked = 'on'; if( $checked = 'off' ) { echo 'Hộp kiểm chưa được chọn'; }
Mã script này hiển thị một thông báo nếu $checke
d là 'off'
. Tuy nhiên, biểu thức trong câu lệnh if
là một phép gán, không phải là một so sánh:
$checked = 'off'
Biểu thức này gán chuỗi chữ là 'off'
cho biến $checked
và trả về biến đó. Nó không so sánh giá trị của biến $checked
với giá trị 'off'
. Do đó, biểu thức luôn đánh giá là true
, điều này không chính xác.
Để tránh lỗi này, bạn có thể đặt giá trị trước sau toán tử so sánh và biến sau toán tử so sánh như sau:
<?php $checked = 'on'; if('off' == $checked ) { echo 'Hộp kiểm chưa được chọn'; }
Nếu bạn tình cờ sử dụng toán tử gán (=), PHP sẽ sinh lỗi cú pháp thay vì thực thi mã:
<?php $checked = 'on'; if ('off' = $checked) { echo 'Hộp kiểm chưa được chọn'; }
Lỗi:
Parse error: syntax error, unexpected '=' ...
Tóm lại
- Câu lệnh
if
thực thi một câu lệnh nếu một điều kiện đánh giá làtrue
. - Luôn sử dụng dấu ngoặc nhọn ngay cả khi chỉ có một câu lệnh để thực thi trong câu lệnh
if
. Nó làm cho mã code rõ ràng hơn. - Hãy sử dụng mẫu
if ( value == $variable_name ) {}
để tránh những sai lầm có thể xảy ra.