Sử dụng if, else, elseif điều kiện trong PHP

PHP Tutorial | by Học PHP

Trong PHP, công cụ mạnh mẽ giúp chúng ta làm điều này chính là các câu lệnh điều kiện như if, else, và elseif. Những câu lệnh này cho phép chúng ta kiểm soát luồng hoạt động của chương trình, định hướng xem đoạn mã nào sẽ được thực thi dựa trên việc một điều kiện có đúng hay không. Hãy cùng tìm hiểu cách sử dụng chúng để làm cho các ứng dụng PHP của bạn trở nên thông minh và linh hoạt hơn nhé!

Câu lệnh điều kiện là gì ?

Hãy tưởng tượng bạn đang đi siêu thị và phải quyết định mua gì. Bạn sẽ nghĩ: "Nếu tôi có đủ tiền mua táo, tôi sẽ mua táo. Nếu không, tôi sẽ mua chuối." Trong lập trình, câu lệnh điều kiện cũng hoạt động y hệt như vậy!

Nói một cách đơn giản, câu lệnh điều kiện cho phép chương trình của bạn đưa ra quyết định. Thay vì chạy một mạch từ trên xuống dưới, chương trình có thể "nghĩ":

  • "Nếu điều kiện này đúng, hãy làm A."
  • "Nếu không, hãy làm B."

Điều này giúp chương trình trở nên linh hoạt và thông minh hơn rất nhiều. Nó sẽ thực thi các đoạn mã khác nhau tùy thuộc vào việc một điều kiện có đúng (true) hay sai (false).

Khi nào cần sử dụng câu lệnh điều kiện?

Câu lệnh điều kiện cực kỳ hữu ích và được dùng trong hầu hết mọi chương trình. Bạn sẽ cần đến chúng khi muốn:

Kiểm tra đầu vào của người dùng:

  • Ví dụ: "Nếu người dùng nhập tên, hãy chào mừng họ. Nếu họ để trống, hãy yêu cầu nhập lại."
  • Ví dụ: "Nếu mật khẩu nhập vào đúng, cho phép đăng nhập. Nếu sai, hiển thị thông báo lỗi."

Thay đổi hành vi của chương trình dựa trên dữ liệu:

  • Ví dụ: "Nếu số dư tài khoản lớn hơn 0, cho phép rút tiền. Nếu không, báo tài khoản không đủ."
  • Ví dụ: "Nếu nhiệt độ trên 30 độ C, hiển thị 'Trời nóng!'. Nếu dưới 0 độ C, hiển thị 'Trời rất lạnh!'"

Xử lý các tình huống khác nhau:

  • Ví dụ: "Nếu sản phẩm còn hàng, thêm vào giỏ. Nếu hết hàng, hiển thị 'Hết hàng'."
  • Ví dụ: "Nếu ngày hiện tại là cuối tuần, hiển thị 'Chúc mừng cuối tuần!'"

Ví dụ cơ bản: Sử dụng if

Hãy bắt đầu với loại cơ bản nhất: if. Lệnh if sẽ thực thi một đoạn mã chỉ khi điều kiện của nó đúng.

Cú pháp:

if (điều_kiện) {
    // Đoạn mã này sẽ được thực thi NẾU điều_kiện đúng (true)
}

Ví dụ thực tế: Kiểm tra xem bạn có đủ tuổi để xem một bộ phim không.

<?php
$tuoiCuaBan = 18; // Đây là tuổi của bạn

// Điều kiện: Nếu tuổi của bạn lớn hơn hoặc bằng 18
if ($tuoiCuaBan >= 18) {
    echo "Bạn đủ tuổi để xem phim này!";
}

echo "<br>"; // Xuống dòng cho dễ nhìn

$tuoiCuaToi = 16; // Giả sử một người khác 16 tuổi

// Điều kiện: Nếu tuổi của tôi lớn hơn hoặc bằng 18
if ($tuoiCuaToi >= 18) {
    echo "Bạn đủ tuổi để xem phim này!"; // Đoạn này sẽ không được in ra vì $tuoiCuaToi không >= 18
}

echo "Chương trình kết thúc.";
?>

Giải thích ví dụ:

  • Trong ví dụ đầu tiên, $tuoiCuaBan là 18. Điều kiện $tuoiCuaBan >= 18 (18 lớn hơn hoặc bằng 18) là đúng (true). Vì vậy, đoạn văn bản "Bạn đủ tuổi để xem phim này!" được in ra.
  • Trong ví dụ thứ hai, $tuoiCuaToi là 16. Điều kiện $tuoiCuaToi >= 18 (16 lớn hơn hoặc bằng 18) là sai (false). Vì vậy, đoạn văn bản bên trong khối if không được in ra.

Câu lệnh if trong PHP

Câu lệnh if là cánh cửa đầu tiên để chương trình của bạn "suy nghĩ". Mục đích của nó là thực thi một đoạn mã cụ thể chỉ khi một điều kiện cho trước là đúng (true). Nếu điều kiện đó sai (false), đoạn mã bên trong khối if sẽ bị bỏ qua hoàn toàn.

Cú pháp của if

Cú pháp của câu lệnh if rất đơn giản:

if (điều_kiện) {
    // Mã sẽ được thực thi NẾU điều_kiện này đúng (true)
}
  • if: Từ khóa bắt đầu câu lệnh điều kiện.
  • (điều_kiện): Đây là nơi bạn đặt biểu thức mà bạn muốn kiểm tra. Biểu thức này phải cho ra kết quả là true hoặc false.
  • { ... }: Cặp dấu ngoặc nhọn này bao quanh khối mã sẽ được thực thi nếu điều kiện đúng.

Ví dụ cơ bản về if

Hãy xem một vài ví dụ để hiểu rõ hơn:

Ví dụ 1: Kiểm tra xem một số có lớn hơn 10 không

<?php
$soCanKiemTra = 15; // Gán giá trị 15 cho biến

// Kiểm tra: Nếu $soCanKiemTra lớn hơn 10
if ($soCanKiemTra > 10) {
    echo "Số " . $soCanKiemTra . " lớn hơn 10.";
}

echo "<br>"; // Xuống dòng cho dễ nhìn

$soKhac = 7; // Gán giá trị 7 cho biến

// Kiểm tra: Nếu $soKhac lớn hơn 10
if ($soKhac > 10) {
    echo "Số " . $soKhac . " lớn hơn 10."; // Đoạn này sẽ KHÔNG được in ra
}

echo "<p>Hoàn thành kiểm tra số.</p>";
?>

Giải thích:

  • Với $soCanKiemTra = 15, điều kiện 15 > 10đúng, nên dòng chữ "Số 15 lớn hơn 10." được in ra.
  • Với $soKhac = 7, điều kiện 7 > 10sai, nên dòng chữ bên trong khối if không được in ra.

Ví dụ 2: Kiểm tra xem người dùng đã đăng nhập chưa

Giả sử chúng ta có một biến $daDangNhap để theo dõi trạng thái đăng nhập.

<?php
$daDangNhap = true; // Giả sử người dùng đã đăng nhập (true)

// Kiểm tra: Nếu $daDangNhap là đúng
if ($daDangNhap) {
    echo "Chào mừng bạn trở lại, Người dùng!";
}

echo "<br>";

$daDangNhapKhac = false; // Giả sử người dùng chưa đăng nhập (false)

// Kiểm tra: Nếu $daDangNhapKhac là đúng
if ($daDangNhapKhac) {
    echo "Chào mừng bạn trở lại, Người dùng!"; // Đoạn này sẽ KHÔNG được in ra
}

echo "<p>Kiểm tra trạng thái đăng nhập hoàn tất.</p>";
?>

Giải thích:

  • Khi $daDangNhaptrue, điều kiện if ($daDangNhap) là đúng, nên thông báo chào mừng xuất hiện.
  • Khi $daDangNhapKhacfalse, điều kiện if ($daDangNhapKhac) là sai, nên không có thông báo chào mừng nào được in ra từ khối if này.

Câu lệnh if...else trong PHP

Câu lệnh if...else nâng cấp khả năng ra quyết định của chương trình. Mục đích của nó là cung cấp hai nhánh hành động:

  • Thực thi một đoạn mã nếu điều kiện đúng.
  • Thực thi một đoạn mã khác nếu điều kiện sai.

Điều này đảm bảo rằng luôn có một hành động được thực hiện, bất kể điều kiện ban đầu đúng hay sai.

Cú pháp của if...else

Cú pháp của if...else mở rộng từ if bằng cách thêm từ khóa else:

if (điều_kiện) {
    // Mã này sẽ được thực thi NẾU điều_kiện đúng
} else {
    // Mã này sẽ được thực thi NẾU điều_kiện sai (tức là không đúng)
}
  • if (điều_kiện) { ... }: Giống như câu lệnh if thông thường.
  • else { ... }: Khối mã này sẽ được thực thi khi và chỉ khi điều_kiện trong iffalse.

Ví dụ cơ bản về if...else

Ví dụ 1: Kiểm tra xem học sinh đỗ hay trượt

Giả sử điểm để đỗ là 50.

<?php
$diemHocSinhA = 65; // Điểm của học sinh A

// Kiểm tra: Nếu điểm lớn hơn hoặc bằng 50
if ($diemHocSinhA >= 50) {
    echo "Học sinh A: Đỗ!";
} else {
    echo "Học sinh A: Trượt.";
}

echo "<br>";

$diemHocSinhB = 40; // Điểm của học sinh B

// Kiểm tra: Nếu điểm lớn hơn hoặc bằng 50
if ($diemHocSinhB >= 50) {
    echo "Học sinh B: Đỗ!";
} else {
    echo "Học sinh B: Trượt.";
}

echo "<p>Kiểm tra kết quả học tập hoàn tất.</p>";
?>
  • Giải thích:
    • Với $diemHocSinhA = 65, điều kiện 65 >= 50đúng, nên "Học sinh A: Đỗ!" được in ra.
    • Với $diemHocSinhB = 40, điều kiện 40 >= 50sai, nên khối else được thực thi và "Học sinh B: Trượt." được in ra.

Ví dụ 2: Hiển thị "Chào buổi sáng" hoặc "Chào buổi chiều" tùy theo thời gian

Chúng ta sẽ dùng hàm date("H") để lấy giờ hiện tại (định dạng 24 giờ).

<?php
$gioHienTai = date("H"); // Lấy giờ hiện tại (ví dụ: 10, 15, 22...)

echo "Bây giờ là: " . $gioHienTai . " giờ.<br>";

// Kiểm tra: Nếu giờ hiện tại nhỏ hơn 12 (trước giữa trưa)
if ($gioHienTai < 12) {
    echo "Chào buổi sáng!";
} else {
    echo "Chào buổi chiều!";
}

echo "<p>Lời chào đã được hiển thị.</p>";
?>
  • Giải thích:
    • Nếu bạn chạy đoạn mã này vào lúc 10 giờ sáng, $gioHienTai sẽ là 10. Điều kiện 10 < 12đúng, nên "Chào buổi sáng!" được in ra.
    • Nếu bạn chạy đoạn mã này vào lúc 3 giờ chiều (15 giờ), $gioHienTai sẽ là 15. Điều kiện 15 < 12sai, nên khối else được thực thi và "Chào buổi chiều!" được in ra.

Như bạn thấy, ifif...else là những công cụ cơ bản nhưng cực kỳ mạnh mẽ, giúp chương trình của bạn phản ứng linh hoạt với các tình huống khác nhau. Tiếp theo, chúng ta sẽ khám phá if...elseif...else để xử lý nhiều điều kiện hơn nữa!

Câu lệnh if...elseif...else trong PHP

Mục đích của if...elseif...else

Câu lệnh if...elseif...else được sử dụng khi bạn cần kiểm tra nhiều điều kiện khác nhau một cách tuần tự. Thay vì chỉ có hai lựa chọn (đúng hoặc sai như if...else), bạn có thể có nhiều nhánh rẽ cho chương trình.

  • Kiểm tra nhiều điều kiện một cách tuần tự: Chương trình sẽ lần lượt kiểm tra từ điều kiện đầu tiên (if), rồi đến điều kiện thứ hai (elseif), thứ ba, v.v...
  • Thực thi đoạn mã tương ứng với điều kiện đầu tiên đúng: Ngay khi PHP tìm thấy một điều kiện đúng, nó sẽ thực thi đoạn mã trong khối đó và bỏ qua tất cả các khối elseifelse còn lại. Đây là điểm rất quan trọng cần nhớ.
  • Nếu không có điều kiện nào đúng, thực thi đoạn mã trong khối else (nếu có): Nếu không có bất kỳ điều kiện nào trong if hay elseif là đúng, thì khối else (nếu bạn định nghĩa) sẽ được thực thi như một lựa chọn "mặc định" hoặc "không có cái nào khớp".

Cú pháp của if...elseif...else

Cú pháp của if...elseif...else cho phép bạn thêm bao nhiêu elseif tùy thích giữa ifelse:

if (điều_kiện_1) {
    // Mã này sẽ được thực thi nếu điều_kiện_1 đúng
} elseif (điều_kiện_2) {
    // Mã này sẽ được thực thi nếu điều_kiện_2 đúng
    // (chỉ khi điều_kiện_1 sai)
} elseif (điều_kiện_N) { // Bạn có thể thêm nhiều elseif ở đây
    // Mã này sẽ được thực thi nếu điều_kiện_N đúng
    // (chỉ khi tất cả các điều kiện phía trước đều sai)
} else {
    // Mã này sẽ được thực thi nếu KHÔNG CÓ điều kiện nào ở trên đúng
}

Ví dụ cơ bản về if...elseif...else

Ví dụ 1: Xếp loại học lực (Giỏi, Khá, Trung bình, Yếu)

Giả sử chúng ta có các mức điểm như sau:

  • Điểm >= 90: Giỏi
  • Điểm >= 70: Khá
  • Điểm >= 50: Trung bình
  • Điểm &lt; 50: Yếu
<?php
$diemSo = 85; // Điểm của học sinh

echo "Điểm số của học sinh là: " . $diemSo . "<br>";

if ($diemSo >= 90) {
    echo "Xếp loại: Giỏi";
} elseif ($diemSo >= 70) {
    echo "Xếp loại: Khá";
} elseif ($diemSo >= 50) {
    echo "Xếp loại: Trung bình";
} else {
    echo "Xếp loại: Yếu";
}

echo "<hr>"; // Đường kẻ ngang để phân biệt

$diemSoKhac = 45; // Một điểm số khác

echo "Điểm số của học sinh là: " . $diemSoKhac . "<br>";

if ($diemSoKhac >= 90) {
    echo "Xếp loại: Giỏi";
} elseif ($diemSoKhac >= 70) {
    echo "Xếp loại: Khá";
} elseif ($diemSoKhac >= 50) {
    echo "Xếp loại: Trung bình";
} else {
    echo "Xếp loại: Yếu";
}
?>

Giải thích:

Với $diemSo = 85:

  • 85 >= 90 là sai.
  • 85 >= 70đúng. Vì đây là điều kiện đầu tiên đúng, "Xếp loại: Khá" được in ra, và các khối elseifelse còn lại bị bỏ qua.

Với $diemSoKhac = 45:

  • 45 >= 90 là sai.
  • 45 >= 70 là sai.
  • 45 >= 50 là sai.
  • Không có điều kiện nào đúng, nên khối else được thực thi, in ra "Xếp loại: Yếu".

Ví dụ 2: Hiển thị thông báo dựa trên nhiệt độ (Nóng, Ấm, Lạnh)

Giả sử ngưỡng nhiệt độ:

  • Nhiệt độ > 30°C: Nóng
  • Nhiệt độ >= 15°C và &lt;= 30°C: Ấm áp
  • Nhiệt độ &lt; 15°C: Lạnh
<?php
$nhietDo = 25; // Nhiệt độ hiện tại

echo "Nhiệt độ hiện tại: " . $nhietDo . "°C<br>";

if ($nhietDo > 30) {
    echo "Thời tiết: Nóng!";
} elseif ($nhietDo >= 15 && $nhietDo <= 30) { // Sử dụng toán tử AND (&&) để kết hợp 2 điều kiện
    echo "Thời tiết: Ấm áp.";
} else {
    echo "Thời tiết: Lạnh!";
}

echo "<hr>";

$nhietDoKhac = 5; // Nhiệt độ khác

echo "Nhiệt độ hiện tại: " . $nhietDoKhac . "°C<br>";

if ($nhietDoKhac > 30) {
    echo "Thời tiết: Nóng!";
} elseif ($nhietDoKhac >= 15 && $nhietDoKhac <= 30) {
    echo "Thời tiết: Ấm áp.";
} else {
    echo "Thời tiết: Lạnh!";
}
?>

Giải thích:

Với $nhietDo = 25:

  • 25 > 30 là sai.
  • 25 >= 15 && 25 <= 30đúng (vì cả hai phần đều đúng). "Thời tiết: Ấm áp." được in ra.

Với $nhietDoKhac = 5:

  • 5 > 30 là sai.
  • 5 >= 15 && 5 <= 30 là sai (vì 5 >= 15 là sai).
  • Không có điều kiện nào đúng, nên khối else được thực thi, in ra "Thời tiết: Lạnh!".

if...elseif...else là một cấu trúc rất linh hoạt, cho phép bạn xử lý hầu hết các tình huống ra quyết định phức tạp trong chương trình của mình.

Các toán tử so sánh thường dùng trong PHP

Các toán tử so sánh dùng để so sánh hai giá trị với nhau và trả về kết quả là true (đúng) hoặc false (sai). Kết quả này sau đó sẽ được sử dụng bởi các câu lệnh điều kiện.

== (Bằng): So sánh giá trị.

  • Kiểm tra xem hai giá trị có bằng nhau hay không. Không quan tâm đến kiểu dữ liệu.

Ví dụ:

<?php
$a = 5;
$b = 5;
$c = "5"; // Chuỗi "5"

echo "5 == 5: ";
var_dump($a == $b); // true (5 bằng 5)

echo "5 == \"5\": ";
var_dump($a == $c); // true (5 bằng chuỗi "5" - PHP tự động chuyển đổi kiểu)
?>

=== (Giống hệt): So sánh giá trị và kiểu dữ liệu.

  • Kiểm tra xem hai giá trị có bằng nhau cùng kiểu dữ liệu hay không. Nghiêm ngặt hơn ==.

Ví dụ:

<?php
$a = 5;
$b = 5;
$c = "5"; // Chuỗi "5"

echo "5 === 5: ";
var_dump($a === $b); // true (5 giống hệt 5)

echo "5 === \"5\": ";
var_dump($a === $c); // false (5 không giống hệt chuỗi "5" vì khác kiểu dữ liệu)
?>

!= hoặc <> (Không bằng): So sánh giá trị.

  • Kiểm tra xem hai giá trị có khác nhau hay không.

Ví dụ:

<?php
$x = 10;
$y = 20;
$z = "10";

echo "10 != 20: ";
var_dump($x != $y); // true (10 không bằng 20)

echo "10 != \"10\": ";
var_dump($x != $z); // false (10 bằng chuỗi "10" khi so sánh giá trị)
?>

!== (Không giống hệt): So sánh giá trị và kiểu dữ liệu.

  • Kiểm tra xem hai giá trị có khác nhau hoặc khác kiểu dữ liệu.

Ví dụ:

<?php
$x = 10;
$y = 20;
$z = "10";

echo "10 !== 20: ";
var_dump($x !== $y); // true (10 không giống hệt 20)

echo "10 !== \"10\": ";
var_dump($x !== $z); // true (10 không giống hệt chuỗi "10" vì khác kiểu dữ liệu)
?>

> (Lớn hơn): Kiểm tra xem giá trị bên trái có lớn hơn giá trị bên phải không.

  • Ví dụ: 7 > 5 trả về true.

< (Nhỏ hơn): Kiểm tra xem giá trị bên trái có nhỏ hơn giá trị bên phải không.

  • Ví dụ: 3 < 8 trả về true.

>= (Lớn hơn hoặc bằng): Kiểm tra xem giá trị bên trái có lớn hơn hoặc bằng giá trị bên phải không.

  • Ví dụ: 10 >= 10 trả về true, 12 >= 10 trả về true.

<= (Nhỏ hơn hoặc bằng): Kiểm tra xem giá trị bên trái có nhỏ hơn hoặc bằng giá trị bên phải không.

  • Ví dụ: 4 <= 4 trả về true, 2 <= 4 trả về true.

Các toán tử Logic thường dùng trong điều kiện phức tạp bằng PHP

Các toán tử logic được dùng để kết hợp nhiều điều kiện đơn lẻ lại với nhau, tạo thành một điều kiện phức tạp hơn.

&& (AND - Và): Cả hai điều kiện đều phải đúng.

  • Kết quả là true chỉ khi tất cả các điều kiện con đều là true. Nếu có ít nhất một điều kiện con là false, kết quả sẽ là false.
  • Ví dụ: Bạn muốn đăng nhập, bạn cần cả tên đăng nhập đúng mật khẩu đúng.
<?php
$tenDangNhapDung = true;
$matKhauDung = true;
$matKhauSai = false;

// Cả hai đều đúng
if ($tenDangNhapDung && $matKhauDung) {
    echo "Đăng nhập thành công! <br>"; // Sẽ được in ra
}

// Tên đăng nhập đúng nhưng mật khẩu sai
if ($tenDangNhapDung && $matKhauSai) {
    echo "Đăng nhập thành công! <br>"; // Sẽ KHÔNG được in ra
}
?>

|| (OR - Hoặc): Ít nhất một trong các điều kiện phải đúng.

  • Kết quả là true nếu có ít nhất một điều kiện con là true. Chỉ khi tất cả các điều kiện con đều là false thì kết quả mới là false.
  • Ví dụ: Bạn được giảm giá nếu bạn là sinh viên HOẶC mua số lượng lớn.
<?php
$laSinhVien = true;
$muaSoLuongLon = false;
$khachHangThuong = false;

// Là sinh viên (đúng) hoặc mua số lượng lớn (sai)
if ($laSinhVien || $muaSoLuongLon) {
    echo "Bạn được giảm giá! <br>"; // Sẽ được in ra
}

// Không phải sinh viên (sai) và không mua số lượng lớn (sai)
if ($khachHangThuong || $muaSoLuongLon) {
    echo "Bạn được giảm giá! <br>"; // Sẽ KHÔNG được in ra
}
?>

! (NOT - Không): Đảo ngược giá trị logic của điều kiện.

  • Biến true thành falsefalse thành true.
  • Ví dụ: Nếu bạn không phải là quản trị viên, bạn không thể truy cập.
<?php
$laQuanTriVien = true;
$khongLaQuanTriVien = false;

// Nếu KHÔNG phải quản trị viên ($laQuanTriVien là true, !true sẽ là false)
if (!($laQuanTriVien)) {
    echo "Bạn không có quyền truy cập. <br>"; // Sẽ KHÔNG được in ra
}

// Nếu KHÔNG phải quản trị viên ($khongLaQuanTriVien là false, !false sẽ là true)
if (!($khongLaQuanTriVien)) {
    echo "Bạn không có quyền truy cập. <br>"; // Sẽ được in ra
}
?>

Kết bài

Như vậy, chúng ta đã cùng nhau tìm hiểu về các câu lệnh điều kiện cốt lõi trong PHP: if, if...else, và if...elseif...else. Bạn có thể thấy, những công cụ này không chỉ là nền tảng mà còn là trái tim của mọi chương trình. Chúng cho phép ứng dụng của bạn "suy nghĩ" và "ra quyết định", từ những tác vụ đơn giản như hiển thị lời chào theo giờ, đến các tính năng phức tạp hơn như xác thực người dùng hay phân loại dữ liệu.

Việc nắm vững cách sử dụng các toán tử so sánh (==, ===, >, <, v.v.) và toán tử logic (&&, ||, !) để xây dựng các điều kiện là chìa khóa để khai thác tối đa sức mạnh của chúng. Bằng cách kết hợp linh hoạt, bạn có thể tạo ra các luồng logic đa dạng, giúp chương trình của mình phản ứng một cách thông minh và hiệu quả với mọi tình huống.

Bài viết liên quan