Bài 4: Các câu lệnh rẽ điều kiện và rẽ nhánh trong php

Ngày đăng: 2023-06-07 09:12:27

Mục lục:

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

     2. Câu lệnh điều kiện IF trong PHP.

     3. Câu lệnh điều kiện IF ELSE trong PHP.

     4. Kết hợp nhiều câu lệnh IF ELSE trong PHP.

     5. Câu lệnh IF ELSE lồng nhau.

      6. Câu lệnh Swith trong PHP.

      7. Câu lệnh Swith và IF trong PHP

             

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

Câu lệnh điều kiện if else cho phép ta thay đổi luồng của chương trình dựa trên một điều kiện nào đó. Nếu điều kiện là đúng (true) thì chương trình sẽ được thực hiện, ngược lại nếu điều kiện đưa ra là sai (false) thì nội dung công việc đó sẽ không được thực hiện.

Ví dụ: để kiểm tra một số là số chẵn hay số lẻ ta thực hiện các bước sau:

Bước 1: Lấy số cần kiểm tra
Bước 2: Chia số đó cho 2 để xác định số dư
Bước 3: Kiểm tra số dư đó có bằng 0 hay không, nếu bằng 0 thì đó là số chẵn, ngược lại đó là số lẻ.

Để giải bài toán này qua ngôn ngữ PHP thì trước tiên ta tìm hiểu cú pháp câu điều kiện if else trong php đã nhé.

2. Câu lệnh điều kiện if

Câu lệnh if cho phép ta đưa ra các quyết định dựa trên việc kiểm tra điều kiện nào đó đúng (true) hay sai (false). Cú pháp như sau:

 

if ($bieuthuc)
{
    // Các Câu Lệnh
}

 

Ví dụ: Chương trình kiểm tra một số chẵn hay lẻ

 

$so_can_kiem_tra = 12;
$so_du = $so_can_kiem_tra % 2;
if ($so_du == 0){
     echo 'Số '.$so_can_kiem_tra.' Là Số Chẵn';
}

 

Dòng thứ 1: Gán cho biến $so_can_kiem_tra giá trị = 12

Dòng thứ 2: Chia biến $so_can_kiem_tra / 2 và lấy số dư của phép chia.

Dòng thứ 3: Kiểm tra số dư có bằng 0 hay không? Nếu bằng không thì nó sẽ chạy dòng lệnh bên trong thẻ mở { và thẻ đóng }. Nội dung câu lệnh bên trong sẽ xuất ra màn hình thống báo là số chẵn.

Chạy chương trình này kết quả sẽ xuất ra là "Số 12 Là Số Chẵn". Bây giờ giả sử ta đổi giá trị 12 thành 13 thì kết quả sẽ không xuất ra màn hình vì số 13 chia cho 2 sẽ dư = 1, mà điều kiện để xuất ra câu thông báo là số dư phải bằng 0 => không đúng điều kiện nên trình biên dịch sẽ không chạy vào đoạn code bên trong lệnh if.

  • Biểu Thức chứa trong cặp dấu ngoặc () chính là các biêu thức quan hệ
  • Toán tử dấu chấm . dùng để nối hai chuỗi lại với nhau.
  • Trong một khối lệnh nếu bên trong chứa nhiều hơn 2 lệnh thì phải có cặp ngoặc nhọn {} dùng để mở khối lệnh và đóng khối lênh, như vậy trình biên dịch sẽ hiểu đây là một khối lệnh và nó sẽ thực thi hết khối lệnh này. Ở ví dụ trên trong câu if chỉ có một lệnh xuất ra màn hình nên cặp ngoặc nhọn này ta có thể có hoặc không có cũng không sao.

Ví dụ: Chương trình kiểm tra có phải năm nhuận hay không?

(Năm nhuận là năm chia hết cho 4 hoặc 400 nhưng không chia hết cho 100)

Bước 1: Nhập vào năm cần kiểm tra.
Bước 2: kiểm tra xem năm đó có chia hết cho 4 hoặc là 400 hay không
Bước 3: Xuất ra màn hình nếu điều kiện ở bước 2 là đúng.

Bài giải:

 

$nam = 1990;
$kiem_tra = ($nam % 4 == 0 && $nam % 100 != 0 || $nam % 400 == 0);
if ($kiem_tra == true){
    echo 'Năm ' . $nam . ' Là Năm Nhuận';
}

 

Trong đoạn code trên thì biểu thức điều kiện là khó nhất nên mình sẽ giải thích nó. Để tính được biểu thức này trước tiên ta phải biết độ ưu tiên trong toán tử luận lý theo quy luật là : NOT -> AND -> OR
Trong biểu thức ta không thấy toán tử NOT, có toán tử AND nên ta thực hiện phép này trước, tức là:
($nam % 4 == 0 && $nam % 100 != 0) <=> (1990 % 4 == 0 && 19900 != 0) <=>(false && true) => false

Lúc này biểu thức ($nam % 4 == 0 && $nam % 100 != 0 || $nam % 400 == 0) sẽ thành:
(false || $nam % 400 = 0) <=>(false || false) => false

Vậy kết quả của biểu thức là false. Vì trong câu if điều kiện nhập vào là phải true mới thực hiện xuất ra màn hình, nhưng biến kiểm tra lại mang giá trị false nên những dòng lệnh bên trong cặp ngoặc nhọn không được thực hiện => nên chương trình không in ra câu thông báo.

3. Câu lệnh If else trong php

Lệnh if dùng để kiểm tra một điều kiện có đúng hay không? Giả sử trường hợp ngược lại điều kiện không đúng thì sẽ thực hiện điều gì ? để giải đáp câu hỏi này ta sẽ nghiên cứu đến lệnh if else trong php

 

if ($bieuthuc){
    // Những Câu Lệnh 1;
}
else{
    // Những câu lệnh 2;
}

 

Giải thích ý nghĩa:

  • Nếu $bieuthuc đúng thì Những Câu Lệnh 1 sẽ được thực hiện và Những Câu Lệnh 2 sẽ không được thực hiện.
  • Ngược lại thì nó sẽ không cần kiểm tra nữa và thực hiện Những Câu Lệnh 2.

Ví dụ: kiểm tra năm nay là năm chẵn hay năm lẽ, xuất ra màn hình kết quả chẵn hay lẽ.

Bước 1: Nhập năm
Bước 2: Chia cho 2 và lấy số dư
Bước 3: Kiểm tra xem số dư có bằng 0 hay không? Nếu bằng không là năm chẵn, ngược lại là năm lẽ

 

$nam = 2014;
$so_du = $nam % 2;
if ($so_du == 0){
    echo 'Năm ' . $nam . ' Là Năm Chẵn';
}
else{
    echo 'Năm ' . $nam . ' Là Năm Lẻ';
}

 

Giải thích

Bước 1: Nhập vào biến $nam giá trị 2014;
Bước 2: Lấy số dư khi chia năm 2014 cho 2 và gán vào biến $so_du (lúc này số dư = 0)
Bước 3: Kiểm tra xem $so_du == 0 hay không? vì số dư bằng 0 nên thõa mãn điều kiện nên nó chạy vào biểu thức trong khối if và xuất ra màn hình “Năm 2014 Là Năm Chẵn”. Nó sẽ không đoạn code ở trong câu lệnh else.

Giả sử ta nhập $nam =2013 ta thực hiện tương tự:

Bước 1: Nhập vào biến $nam giá trị 2013
Bước 2: Lấy số dư khi chia năm 2014 cho 2 và gán vào biến $so_du (lúc này số dư = 1)
Bước 3: Kiểm tra xem $so_du == 0 hay không? vì số dư bằng 1 khác 0 nên nó sẽ bỏ qua khối lệnh trong if và chạy vào khối lệnh trong else nên xuất ra màn hình “Năm 2013 Là Năm Lẻ”.

4. Kết hợp nhiều câu lệnh if else trong php

Trong thực tế không phải lúc nào cũng chỉ có 2 điều kiện mà sẽ có hàng chục điều kiện khác nhau, lúc này ta phải kết hợp nhuần nhuyễn giữa 2 lệnh if và else để xử lý.

Ví dụ: Nhập vào một màu và kiểm tra:

  • Nếu là màu xanh thì xuất ra màn hình dòng chữ “Đây Là Màu Xanh”.
  • Nếu là màu đỏ thì xuất ra dòng chữ “Đây là màu đỏ”.
  • Nếu là màu vàng thì xuất ra dòng chữ “Đây là màu vàng”.
  • Các màu còn lại thì xuất ra dòng chữ “Các màu khác”.

Hướng dẫn:

Bước 1: Nhập màu
Bước 2: Kiểm tra giá trị của màu xem :

  • Nếu màu bằng ‘màu xanh’ thì xuất ra màn hình “Đây là màu xanh”,
  • Ngược lại nếu bằng ‘màu đỏ’ thì xuất ra màn hình “Đây là màu đỏ”,
  • Ngược lại nếu bằng ‘màu vàng’ thì xuất ra màn hình ‘Đây là màu vàng’,
  • Ngược lại không cần kiểm tra gì nữa vì là trương hợp cuối cùng, không phải là các trưởng hợp ở trên nên ta xuất ra màn hình “Các màu khác”.

Bài giải:

 

$mau = 'màu xanh';
  
if ($mau == 'màu xanh'){
    echo 'Đây là màu xanh';
}
else if ($mau == 'màu đỏ')
{
    echo "Đây là màu đỏ";
}
else if ($mau == 'màu vàng'){
    echo 'Đây là màu vàng';
}
else{
    echo 'Các màu khác';
}

 

Giải thích:

Bước 1: Nhập màu xanh vào biến $mau

Bước 2: Đến dòng lệnh kiểm tra phải màu xanh không, vì nó bằng ‘màu xanh’ nên bên trong khối lệnh if của màu xanh sẽ được chạy và xuất ra màn hình dòng chữ “Đây là màu xanh”, đồng thời nó không chạy các dòng lệnh bên dưới nữa.

Giả sử ta nhập biến $mau = ‘màu vàng’ thì các bước chạy sẽ như sau:

Bước 1: Nhập màu vàng vào biến $mau
Bước 2: Đến dòng lệnh kiểm tra có phải màu xanh không? Vì không đúng nên bỏ qua khối lệnh này
Bước 3: Đến dòng lệnh kiểm tra phải màu đỏ không? Vì không đúng nên cũng bỏ qua khối lệnh màu đỏ này
Bước 4: Đến dòng lệnh kiểm tra có phải màu vàng không, Vì đúng nên bên trong khối màu vàng sẽ được chạy và in ra màn hình chữ “Đây là màu vàng” và đồng thơi không chạy vào câu lệnh else ở bên dưới vì đã đúng điều kiện

Giả sử ta nhập biến $mau = ‘màu nâu’ thì như thế nào? Tương tự trình biên dịch sẽ kiểm tra lần lược các màu xanh, đỏ, vàng đều không đúng, ở cái else cuối cùng là trường hợp còn lại của các trường hợp trên nên nó không cần kiểm tra và chạy thẳng vào luôn nên màn hình sẽ in ra dòng chữ “Các màu khác”.

Note: Ta có thể chuyển dòng code thành ngôn ngữ bình thường được, ví dụ như bài toán trên tôi sẽ chuyển sang tiếng việt như sau:
Nếu màu xanh thì tôi xuất ra màn hình dòng chữ “đây là màu xanh”, ngược lại nếu màu đỏ thì tôi xuất ra màn hình dòng chữ “Đây là màu đỏ”, ngược lại nếu màu vàng thì tôi xuất ra màn hình dòng chữ “Đây là màu vàng”, không phải các trường hợp trên thì tôi xuất ra màn hình dòng chữ “Các màu khác”.

5. Câu lệnh if else lồng nhau

Đây là phần khó nhất trong tất cả các vấn đề của câu lệnh if else trong php, ở bên trên ta chỉ chạy câu lệnh if else một tầng, ở phần này ta sẽ nghiên cứu đến if else nhiều tầng lồng nhau, có nghĩa là câu if con nằm trong câu if cha.

 

if ($bieu_thuc_cha)
{
    // Các câu lệnh thuộc về biểu thức cha;
    if ($bieu_thuc_con){
        // Các câu lệnh thuộc về biểu thức con;
    }
}

 

Ví dụ: Kiểm tra sô nhập vào có phải là số chẵn hay không? Nếu là số chẵn thì kiểm tra tiếp số đó có lớn hơn100 hay không, nếu lớn hơn 100 thì xuất ra màn hình “Số chẵn và lớn hơn 100″, ngược lại xuất ra màn hình “Số chẵn và nhỏ hơn 100″.

Bước 1: Nhập vào một số
Bước 2: Kiểm tra có phải số chẵn hay không, nếu là số chẵn thì qua bước 3
Bước 3: Kiểm tra số đó lớn hơn 100 hay không, nếu lớn hơn thì xuất ra màn hình “Số chẵn và lớn hơn 100″, ngược lại xuất ra màn hình “Số chẵn và nhỏ hơn 100″.

Bài giải:

 

$so = 80; // Nhập vào số 80
if ($so % 2 == 0) // Nếu số dư khi chia cho 2 = o, tức là số chẵn ta sẽ chạy tiếp câu lệnh bên trong
{
    if ($so > 100){ // Nếu số lớn hơn 100 thì chạy lệnh bên trong
        echo 'Số chẵn và lớn hơn 100';
    }
    else if ($so < 100){ // Ngược lại nếu số nhỏ hơn 100 thì chạy lệnh bên trong
        echo 'Số chẵn và nhỏ hơn 100';
    }
}

 

Qua phần ghi chú tôi đã giải thích cho các bạn nó xử lý như thế nào rồi nên có lẽ tôi không giải thích gì thêm cho phần này vì nó cũng tương tự như những phần trên, chỉ khác nhiều câu lệnh if lồng nhau. Nếu các bạn vẫn chưa hiểu thì qua phần bài tập có lời giải ở cuối bài các bạn đọc kỹ và gõ theo rồi xem kết quả là sẽ hình dung được.

6. Câu lệnh switch trong PHP

Câu lệnh switch trong php cho phép ta đưa ra quyết định có nhiều cách lựa chọn để giá trị của biểu thức truyền vào. Nếu giá trị biểu thức truyền vào trùng với các giá trị biểu thức điều kiện thì các câu lệnh bên trong biểu thức điều kiện sẽ được thực hiện.

Cú pháp:

 

switch ($variable) {
    case $value_1:
       // chuỗi câu lênh
       break;
    case $value_2:
        // chuỗi câu lệnh
        break;
    default:
        // chuỗi câu lệnh
        break;
}

 

Trong đó lệnh switchcase và default là các từ khóa trong PHP. Các chuỗi câu lệnh có thể là lệnh đơn (1 lệnh) hoặc lệnh ghép (kết hợp nhiều lệnh) và không cần đặt trong cặp dấu ngoặc nhọn {}. Ở mỗi dòng lệnh lựa chọn (case) nó sẽ so sánh xem biến truyền vào $variable có bằng với biến điều kiện $value_1, $value_2 hay không, nếu trùng với case nào thì những câu lệnh bên trong case đó sẽ được thực hiện, đồng thời dòng lệnh break sẽ kết thúc câu lệnh switch. Nếu không có lựa chọn (case) nào đúng thì mặc định nó sẽ chạy vào chuỗi dòng lệnh trong default, lệnh default trong mệnh đề rẻ nhánh switch có thể có hoặc không.

Giá trị ở case chỉ chấp nhận các kiễu dữ liệu string, INT, boolean, null, foat hoặc là một biểu thức có kết quả trả về một trong năm loại dữ liệu đó và toán tử quan hệ so sánh trong switch luôn luôn là ==.

Ví dụ: Viết chương nhập vào một số, dùng lệnh rẻ nhánh switch kiểm tra số đó nếu:

  • Bằng 0 thì xuất dòng lênh “Số không”
  • Bằng 1 thì xuất dòng lệnh “Số một”
  • Bằng 2 thì xuất dòng lệnh “Số hai”
  • Bằng 3 thì xuất dòng lệnh “Số ba”
  • Bằng 4 thì xuất dòng lệnh “Số bốn”
  • Các số còn lại xuất hiện dòng lệnh “Không tìm thấy”

Bài giải:

 

$number = 1;
switch ($number)
{
    case 0 :
        echo 'Số không';
        break;
    case 1:
        echo 'Số một';
        break;
    case 2:
        echo 'Số hai';
        break;
    case 3:
        echo 'Số ba';
        break;
    case 4 :
        echo 'Số bốn';
        break;
    default:
        echo 'Không tìm thấy';
        break;
}

 

Giải thích:

  • Bước 1: Biểu thức truyền vào là biến $number có giá trị = 10
  • Bước 2: Ở case thứ nhất điều kiện là $number = 0 thì mới thực hiện, mà $number = 10 nên không thỏa điều kiện
  • Bước 3: Tương tự cho các lệnh case còn lại đều không thỏa điều kiện.
  • Bước 4: Đến lệnh default, đây là lệnh được thực hiện khi các lênh case trên không có cái nào thỏa điều kiện nên trên màn hình sẽ xuất hiện chữ “Không tìm thấy”.

Giả sử ta nhập biên $number = 2, bài toán trên sẽ được giải thích như sau:

  • Bước 1: Nhập $number = 2
  • Bước 2: Ở case thứ nhất không thỏa điều kiện vì 2 khác 0 nên chương trình sẽ qua Case tiếp theo.
  • Bước 3: Ở case thứ 2 vẫn không thỏa điều kiện vì 2 khác 1 nên chương trình sẽ qua Case tiếp theo
  • Bước 4: Ở case thứ 3 này thỏa điều kiện vì 2 bằng 2, lúc này chương trình sẽ chạy vào các câu lệnh bên trong nên xuất ra màn hình chữ ‘Số hai’, đồng thời dòng Break dừng luôn cả chương trình rẻ nhánh này vì đã thỏa mãn. Kết thúc chương trình

7. Switch và if

Lệnh If và lệnh Switch là 2 dạng lệnh rẻ nhánh trong PHP, tuy nhiên lệnh if vẫn linh hoạt hơn switch và tốc độ cũng nhanh hơn. Với những bài toán ta thể hiện bằng switch thì hoàn toàn có thể chuyển thành if, ngược lại những bài toán ta dùng lệnh if để thể hiện thì chưa chắc đã chuyển qua lệnh switch đươc.

Với bài toán trên ta thể hiện bằng câu lệnh if như sau:

 

$number = 10;
if ($number == 0){
    echo 'Số không';
}
else if ($number == 1){
    echo 'Số một';
}
else if ($number == 2){
    echo 'Số hai';
}
else if ($number == 3){
    echo 'Số ba';
}
else if ($number == 4){
    echo 'Số bốn';
}
else {
    echo 'Không tìm thấy';  
}

 

8. Switch lồng nhau

Cũng như lệnh if, lệnh switch cũng có thể lồng nhau.

Ví dụ:

 

$number = 12;
$midle = null;
switch ($number)
{
    case 12 : // nếu $number = 12
        $midle = $number % 2; // lấy số dư
        switch ($midle)
        {
            case 0 : // nếu số dư = 0
                echo 'Số chẵn';
                break;
            default :
                echo 'Số lẽ';
                break;
        }
        break;
    default: // nếu không phải 12 thì không làm gì
        break;
}

 

 

     

Về bài trước...

                                 Bài tiếp theo...

 

 

 


Tài liệu lập trình PHP

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

12191