11 Oct

Biểu thức cấu trúc rẽ nhánh và vòng lặp trong PHP 5.00/5 (100.00%) 2 votes

Biểu thức điều kiện là một trong những khái niệm quan trọng trong ngôn ngữ lập trình nói chung và ngôn ngữ lập trình PHP nói riêng. Biểu thức điều kiện giúp chúng ta giải quyết các bài toán về logic trong thực tế dễ dàng hơn rất nhiều. Ở bài học này, chúng ta sẽ cùng nhiều tìm hiểu về các biểu thức điều kiện trong PHP. Hiểu được cách sử dụng và vận dụng nó vào trong thực tế.

phptherightway

 

1. Biểu thức điều kiện If Else

dkifelse

Trong đó <BT logic >là một biểu thức điều kiện nếu đúng sẽ trả về <Lệnh 1> nếu  sai kết thúc điều kiện

Cú pháp 1.

Ví dụ.

Kết quả là “x và y không bằng nhau”

Cú pháp 2.

Ví dụ.

Kết quả là « x chia hết cho y »

Lưu ý: Cú pháp 2 muốn đưa về cú pháp 1 thì  kết qủa  cú pháp 2 phải  trả về bằng  return     

if…else cao cấp hơn if một chút.
Cú pháp:

if(<điều kiện>) <câu lệnh 1>; else <câu lệnh 2>; hoặc if(<điều kiện>) {<các câu lệnh 1>;}else {<các câu lệnh 2>;}

Ý nghĩa: Nếu <điều kiện> đúng thì thực hiện <câu lệnh 1> (hoặc <các câu lệnh 1>), còn nếu không đúng thì thực hiện <câu lệnh 2> (hoặc<các câu lệnh 2>).

2. Biểu thức điều kiện switch case.

dkswicth1

Biểu thức điều kiện switch case là loại điều kiện so sánh bằng, nếu biến hoặc biểu thức bằng giá trị nào thì trả về kết quả . Kiểm tra sẽ được đi qua từng trường hợp từ trên xuống, nếu bằng rồi thì ngừng không kiểm tra nữa chúng ta sẽ dùng break để dừng nhé.

Cú pháp.

vidu:

Trong cú pháp của switch…case có một số chú ý sau:

Các giá trị là giá trị của biến, các câu lệnh được thực hiện sau case, nếu có nhiều hơn 1 câu lệnh thì cũng không cần đưa vào dấu { }, sau mỗi case là câu lệnh break để kết thúc case.
Ý nghĩa: lệnh switch sẽ kiểm tra giá trị của <biến>. Nếu là <giá trị 1> thì thực hiện <câu lệnh 1>, nếu là <giá trị 2> thì thực hiện <câu lệnh 2>, nếu là <giá trị 3> thì thực hiện <câu lệnh 3>,…, nếu là <giá trị n> thì thực hiện <câu lệnh n>, còn nếu tất cả các giá trị đều không đúng thì thực hiện <câu lệnh n+1> sau default.

 

Tiếp đến chúng ta sẽ cùng tìm hiểu về các loại vòng lặp trong PHP.

 3.Vòng lặp For

Cú pháp:

<?php
for(biến = giá trị đầu;biến <= giá trị cuối;phương thức chạy)
{
//code trong vòng for
}

Trong đó:

  • Biến là giá trị chạy.
  • Giá trị đầu là giá trị của biến bắt đầu; giá trị cuối là giá trị cuối cùng của biến.
  • Phương thức chạy là cách mà biến chạy từ giá trị đầu đến giá trị cuối.
  • Lệnh trong vòng for nếu nhiều hơn hai lệnh thì cần đặt trong khối lệnh (giữa hai dấu { } )
  • Ý nghĩa: biến sẽ chạy từ giá trị đầu tới giá trị cuối theo phương thức chạy, với mỗi giá trị đó thì thực hiện lệnh trong vòng for.

Ví dụ:

Ý nghĩa câu lệnh trên là: biến $i sẽ chạy từ giá trị 1 tới 100 theo từng đơn vị ( phương thức chạy là $i++ ), với mỗi giá trị $i thì thực hiện print $i. Sau khi kết thúc vòng for trên, trên màn hình sẽ xuất hiện dãy số từ 1 tới 100.

Ví dụ 2:

Ý nghĩa:Biến $i sẽ chạy từ 1 tới 100 theo mỗi 2 đơn vị (tăng 2 đơn vị một lần), với mỗi giá trị $i thì thực hiện hai câu lệnh print. Chạy thử nó bạn sẽ biết ngay.

4.Vòng lặp while.

While cũng là vòng lặp, nhưng khác với for. Trong vòng lặp for, ta cung cấp trước giá trị đầu, cuối, phương thức chạy, nhưng trong vòng lặp while, ta sẽ không cung cấp những thông tin như vậy. Vì while là vòng lặp chưa biết trước, nên chúng ta sẽ cung cấp điều kiện. Tức là khi điều kiện còn thoả mãn thì vòng lặp while vẫn tiếp tục được thực hiện.

Cú pháp:

<?php
while(<điềukiện>)
{
//code
}
?>

ví dụ:

Ở ví dụ trên, khi điều kiện của $i là $i<10 vẫn được thoả mãn thì vòng lặp while vẫn được thực hiện. Tức là: ban đầu, khi $i = 0 thì điều kiện được thoả mãn, câu lệnh print $i và $i++ được thực hiện, sau 10 lần thực hiện, khi $i == 10, điều kiện không khoả mãn, vòng lặp while sẽ không được thực hiện. Ta có thể viết lại vòng lặp while trên thành vòng lặp for như sau:

Vậy, tại sao phải dùng while trong khi for có cấu trúc đơn giản, ngắn gọn hơn vòng while? Bởi vì trong một số trường hợp, chúng ta không biết trước giá trị điều kiện.
Một ví dụ minh hoạ đơn giản sau:

Rõ ràng, trong ví dụ trên, chúng ta không hề biết trước được giá trị $index là bao nhiêu, đó là số tuỳ chọn của người dùng nhập vào trên địa chỉ duyệt web.

Lưu ý: Trong vòng lặp while, ta bắt buộc phải để giá trị ta cần xét có sự thay đổi, ví dụ trên, ta xét biến $i, ta cần phải đưa câu lệnh $i++ vào vòng lặp while để tăng dần giá trị của $i lên, nếu không, vòng while sẽ chạy mãi mãi mà không có điểm dừng, như vậy sẽ xảy ra lỗi.

Một cấu trúc lặp nữa là foreach, nhưng với nội dung là lập trình cơ bản, nên tôi sẽ không giới thiệu ở đây, vì cấu trúc này hơi phức tạp một chút. Khi học nâng cao, các bạn sẽ cần tìm hiểu đến nó.

5.Vòng Lặp Do While

Vòng lặp while sẽ kiểm tra điều kiện trước rồi thực hiện câu lệnh bên trong vòng lặp, còn vòng lặp do while thì ngược lại sẽ thực hiện câu lệnh bên trong vòng lặp trước rồi mới kiểm tra điều kiện, nếu điều kiện đúng thì sẽ thực hiện tiếp vòng lặp kế tiếp, nếu điều kiện sau thì sẽ dừng vòng lặp. Vòng lặp do while trong php luôn luôn thực hiện 1 lần lặp (vì nó thực hiện trước rồi mới kiểm tra điều kiện).

Cú Pháp:

Đừng quên đặt dấu chấm phẩy (;) sau mệnh đề while nhé.

Ví dụ:

Vòng lặp này sẽ lặp 1 lần tại vì nó thực hiện do xong rồi mới kiểm tra điều kiện while. Đây là lý do tại sau tôi nói vòng lặp while luôn thực hiện ít nhất 1 lần.Chương trình này thực hiện xuất ra màn hình các số từ 1 tới 10. Giải thích tương tự như while, ở mỗi bước lặp sẽ xuất ra màn hình biến $i, sau đó tăng $i lên 1, và cuối cùng kiểm tra điều kiện nếu ($i <= 10) đúng thì sẽ lặp vòng tiếp theo,  ngược lại sẽ dừng vòng lặp.

Ví dụ:

Note: Cũng như lưu ý ở vòng lặp while, vòng lặp do while trong php rất dễ bị lặp vô hạn, vì thế hãy cẩn thận khi sử dụng nó.

6. Một bài toán có thể giải ở cả ba vòng lặp không?

Câu trả lời là có thể có và có thể không. Như với ví dụ ở dưới đây.

 

Ví Dụ: In ra màn hình các số từ 100 đến 200;thì với vòng lặp for ta không thể thực hiện được.

Dùng vòng lặp FOR:

Dùng vòng lặp while:

 

Dòng vòng lặp do while

7.Khi nào thì sử dụng vòng lặp for, while, do while

Vấn đề này tùy vào kinh nghiệm của từng người. nhưng có một điểm chung để ta có thể xác định được là:

Những bài toán lặp theo một trình tự nhất định, các bước lặp cách đều nhau (1,2,3,4) và phải biết được tổng số lần lặp thì ta dùng vòng lặp for.

Ngược lại những bài toán khác thì ta dùng vòng lặp while hoặc do … while

8. Vòng lặp while, do while lồng nhau

Cũng như vòng lặp for và mệnh đề if, vòng lặp while, vòng lặp do while có thể lồng nhau để giải quyết bài toán của chúng ta.

Ví Dụ:

Vòng lặp này sẽ xuất ra màn hình một hình tam giác với các con số:

123456789
23456789
3456789
456789
56789
6789
789
89
9

Tổng số lần lặp chính là bằng tích số lần lặp của 2 vòng lặp cộng thêm số lần lặp của vòng lặp cha. Ví dụ vòng lặp 1 lặp 10 lần, vòng lặp 2 lặp 10 lần thì tổng số vòng lặp sẽ là 10 x 10 + 10 = 110 lần. Vì thế chi phí để lặp lồng nhau rất cao.

Như vậy bài học hôm nay chúng ta đã hiểu qua về các cấu trúc rẻ nhánh và vòng lặp trong php. bây giờ thì chúng ta đã tự tin để học bài tiếp theo rồi nhỉ..