⊗ppPmLpFl 124 of 447 menu

Làm việc với cờ trong PHP

Bây giờ chúng ta sẽ học cách làm việc với cờ. Cờ là một biến đặc biệt, có thể chỉ nhận hai giá trị: truefalse. Với sự trợ giúp của cờ, bạn có thể giải quyết các bài toán kiểm tra sự vắng mặt của một thứ gì đó: ví dụ, bạn có thể kiểm tra xem trong một mảng có phần tử với một giá trị cụ thể hay không. Hãy bắt đầu.

Hãy giải bài toán sau: cho một mảng các số, cần kiểm tra xem trong mảng có phần tử với giá trị 3 hay không. Nếu có - in ra '+++', nếu không - in ra '---'.

Đầu tiên, hãy thử in '+++'. Để làm điều này, chúng ta sẽ duyệt qua tất cả các phần tử của mảng và dùng if để hỏi - phần tử hiện tại có bằng giá trị 3 không. Nếu bằng - in ra '+++':

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; } } ?>

Nhưng giải pháp của chúng ta không tốt lắm: bởi vì nếu trong mảng không chỉ có một giá trị 3, mà có nhiều, thì '+++' sẽ được in ra nhiều lần. Hãy sửa mảng của chúng ta (tạo ra hai phần tử có giá trị 3) và đảm bảo điều này:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // sẽ in ra nhiều lần } } ?>

Hãy sửa vấn đề: kết thúc vòng lặp bằng cách sử dụng break, nếu phần tử đã được tìm thấy:

<?php $arr = [1, 2, 3, 4, 3, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; break; // kết thúc vòng lặp } } ?>

Bây giờ hãy thử làm sao để, nếu trong mảng hoàn toàn không có phần tử nào với giá trị 3, in ra '---'. Một quan niệm sai lầm phổ biến là thêm else vào if của chúng ta - trong trường hợp này '---' sẽ được in ra cho tất cả các phần tử không phải là 3:

<?php $arr = [1, 2, 3, 4, 5]; foreach ($arr as $elem) { if ($elem === 3) { echo '+++'; // sẽ in ra trên phần tử 3 } else { echo '---'; // sẽ in ra trên các phần tử 1, 2, 4, 5 } } ?>

Vậy, ý tưởng thêm else là một ý tưởng tồi, không hoạt động. Để giải các bài toán dạng này (các bài toán như vậy xuất hiện khá thường xuyên) người ta sử dụng cái gọi là cờ.

Như đã đề cập ở trên, cờ là một biến như vậy, chỉ có thể nhận hai giá trị: true hoặc false.

Vậy, hãy tạo một biến flag với ý nghĩa như sau: nếu nó bằng true, thì trong mảng có phần tử 3, còn nếu false, thì phần tử đó không có.

Ban đầu, đặt biến flag về giá trị false - nghĩa là chúng ta sẽ coi rằng, không có phần tử 3 trong mảng:

$arr = [1, 2, 3, 4, 5]; $flag = false; // coi rằng không có phần tử 3 trong mảng

Sau đó, chạy vòng lặp với if như chúng ta đã làm trước đó. Nếu vòng lặp phát hiện rằng trong mảng có phần tử 3 - thì đặt biến flag về giá trị true và thoát khỏi vòng lặp bằng break:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; // coi rằng không có phần tử 3 trong mảng foreach ($arr as $elem) { if ($elem === 3) { $flag = true; // có phần tử - định nghĩa lại biến $flag break; // thoát khỏi vòng lặp } } ?>

Câu trả lời cho câu hỏi, liệu trong mảng có 3 hay không, chúng ta chỉ có thể đưa ra sau vòng lặp. Và chúng ta đã có câu trả lời này: sau vòng lặp, biến flag có thể vẫn là false hoặc có thể đổi giá trị của nó thành true, nếu vòng lặp phát hiện ra 3 trong mảng:

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } // ở đây biến $flag bằng true hoặc false ?>

Bây giờ sau vòng lặp, chúng ta có thể tạo một if, sẽ nhìn vào biến flag và in ra màn hình '+++' hoặc '---':

<?php $arr = [1, 2, 3, 4, 5]; $flag = false; foreach ($arr as $elem) { if ($elem === 3) { $flag = true; break; } } if ($flag === true) { echo '+++'; } else { echo '---'; } ?>

Cho mảng:

<?php $arr = ['a', 'b', 'c', 'd', 'e']; ?>

Kiểm tra xem trong mảng này có phần tử 'c' hay không. Nếu có - in ra '+++', còn nếu không - in ra '---'.

Viết mã kiểm tra một số xem nó có phải là số nguyên tố hay không. Số nguyên tố chỉ chia hết cho một và cho chính nó, và không chia hết cho các số khác.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối