Categories PHP-MySQL

Cách viết câu lệnh if trong PHP

Lệnh if trong PHP là lệnh hay được dùng và rất quan trọng. Nó được sử dụng để điều khiển việc thực thi các lệnh dựa trên kết quả TRUE hoặc FALSE của một hoặc nhiều biểu thức điều kiện.

Về cấu trúc thì đoạn code dưới đây trình bày cấu trúc tổng quát và đầy đủ của câu lệnh if:

if (Biểu thức điều kiện 1) {
Khối lệnh được thực thi 1
}
else if (Biểu thức điều kiện 2) {
Khối lệnh được thực thi 2
}
else if (Biểu thức điều kiện n) {
Khối lệnh được thực thi n
}
else {
Khối lệnh được thực thi cuối cùng
}

Biểu thức điều kiện sẽ được đưa vào trong dấu ngoặc đơn (), còn khối lệnh thực thi được đưa vào trong dấu ngoặc nhọn {}

Chỉ khi nào biểu thức điều kiện có giá trị TRUE thì khối lệnh bên trong tương ứng mới được thực thi, còn không thì chương trình sẽ bỏ qua để đi tới xem xét biểu thức điều kiện tiếp theo.

Nếu biểu thức điều kiện có giá trị TRUE thì khối lệnh bên trong tương ứng được thực thi, các biểu thức điều kiện và khối lệnh khác của hàm if đó sẽ bị bỏ qua.

Câu lệnh có thể chứa nhiều mệnh đề else if nhưng chỉ được phép chứa duy nhất 1 mệnh đề else và nó phải ở vị trí cuối cùng (không tính mệnh đề else khác trong câu lệnh if lồng)

Mệnh đề else cuối cùng không có biểu thức điều kiện đi kèm mà chỉ có khối lệnh thực thi. Khi tất cả các điều kiện if và else if đều sai thì lúc đó khối lệnh thực thi của else cuối cùng mới được chạy…

Trong thực tế không phải lúc nào bạn cũng viết đầy đủ cấu trúc trên do vậy có tới 3 cách viết cho câu lệnh if, tùy theo mục đích mà nên sử dụng cái nào cho phù hợp.


Câu lệnh if không có mệnh đề nào khác đi kèm

if (biểu thức điều kiện) {
khối lệnh thực thi
}

Ví dụ: 

if ($tuoi >= 18) {
echo 'Được cấp bằng lái xe';
}

Giải thích: Nếu biến $tuoi có giá trị lớn hơn hoặc bằng 18 thì in ra dòng chữ Được cấp bằng lái xe.


Câu lệnh if có mệnh đề else đi kèm

if (biểu thức điều kiện) {
khối lệnh thực thi
} else {
khối lệnh thực thi
}

Ví dụ:

if ($tuoi >= 18) {
echo 'Được cấp bằng lái xe';
}
else {
echo 'Chưa đủ tuổi!'
}

Giải thích: Nếu biến $tuoi có giá trị lớn hơn hoặc bằng 18 thì in ra dòng chữ ‘Được cấp bằng lái xe’. Còn nếu không thì in ra dòng chữ ‘Chưa đủ tuổi’.


Câu lệnh if có cả mệnh đề else if và else

if (biểu thức điều kiện) {
khối lệnh thực thi
} else if (biểu thức điều kiện) {
khối lệnh thực thi
} else {
khối lệnh thực thi
}

Ví dụ:

if ($diem_tong_ket >= 8) {
$xep_loai = 'Bằng giỏi';
}
else if ($diem_tong_ket >= 7) {
$xep_loai = 'Bằng khá';
}
else if ($diem_tong_ket >= 6) {
$xep_loai = 'Trung bình khá';
}
else if ($diem_tong_ket >= 5) {
$xep_loai = 'Trung bình';
}
else {
echo 'Học lại!';
}

Giải thích: 

  • Nếu biến $diem_tong_ket có giá trị lớn hơn hoặc bằng 8 thì in ra dòng chữ ‘Bằng giỏi’.
  • Nếu không lớn hơn 8 và đồng thời lớn hơn hoặc bằng 7 thì in ra dòng chữ ‘Bằng khá’.
  • Nếu không lớn hơn 7 và đồng thời lớn hơn hoặc bằng 6 thì in ra dòng chữ ‘Trung bình khá’.
  • Nếu không lớn hơn 6 và đống thời lớn hơn hoặc bằng 5 thì in ‘Trung bình’.
  • Cuối cùng, ngoài tất cả các trường hợp trên – tức là nhỏ hơn 5 thì sẽ in ra dòng ‘Học lại!’

Câu lệnh if với biểu thức điều kiện phức

Sẽ không chỉ có 1 biểu thức điều kiện mà sẽ có vài biểu thức điều kiện cùng kết hợp với nhau để xem xét. Nó cũng giống như kiểu bạn chọn mua một cái điện thoại, nó sẽ phải thỏa mãn vài điều kiện, chẳng hạn không có giá quá 7 triệu, phải là điện thoại thông minh, có định vị toàn cầu, hãng sản xuất là Iphone hoặc SamSung…Bạn có thể chọn bắt buộc phải thỏa mãn cả 4 điều kiện trên thì mới mua hoặc cũng có thể chọn thỏa mãn ít nhất 3/4 thì bạn cũng mua…

if (biểu thức điều kiện 1 toán tử logic biểu thức điều kiện 2 toán tử logic biểu thức điều kiện 3...) {
khối lệnh thực thi;
}

Ví dụ:

if (empty($so_luong) || !is_numeric($so_luong) || ($so_luong <=0)) {
$thong_diep = 'Số lượng phải được nhập và phải là một số nguyên dương';
}

Giải thích: Dòng code trên kiểm tra xem biến $so_luong có được nhập hay không bằng hàm empty(), tiếp đến nó kiểm tra dữ liệu nhập vào có phải là một số hay không bằng hàm is_numeric(), cuối cùng là xác thực số nhập vào phải có giá trị dương. Bạn có thể kết hợp toán tử so sánh với toán tử logic như &&, ||, ! trong biểu thức điều kiện phức.

Ngoài ra còn có câu lệnh if lồng – tức là câu lệnh if này lồng trong câu lệnh if khác.


Những lỗi hay xảy ra với if

1. Nhầm so sánh bằng thành gán, ví dụ đáng ra muốn so sánh biến $a có bằng 5 hay không, ta phải viết là $a == 5, thì chúng ta lại viết là $a = 5

2. Để dấu chấm phẩy bên ngoài ngoặc nhọn, ví dụ:

$a = 6;
$b = 5;
$c = 7;

if ($a > $b && $c > 5) {echo "cả hai điều kiện đều đúng"};

3. Biến chưa khởi tạo, ví dụ:


$b = 5;
$c = 7;

if ($a > $b && $c > 5) {echo "cả hai điều kiện đều đúng"};

// biến $a chưa được khởi tạo

Để khắc phục điều này, đối với các biến chưa chắc là đã khởi tạo hay chưa, ta nên kiểm tra trước nó bằng câu lệnh isset(), ví dụ:

$b = 5;
$c = 7;

if (isset($a)) {
    if ($a > $b && $c > 5) {echo "cả hai điều kiện đều đúng";}
}

4. If lồng quá nhiều

Thực ra đây không phải là lỗi, nhưng một số IDE như Apache Neatbeans sẽ đưa ra cảnh báo nếu nó thấy bạn viết có nhiều if lồng vào nhau, nếu tôi nhớ không nhầm là từ 3 đổ lên là sẽ cảnh báo.

Lý do if lồng nhiều nguy hiểm là nó dễ gây ra nhầm lẫn kể cả về mặt dòng lệnh thừa thiếu dấu nọ dấu kia, cũng như logic có thể có vấn đề, dễ gây lẫn lộn.

Back to Top