Nếu hoặc php

Có một số bình luận đùa và gây hiểu lầm, thậm chí một phần thông tin không chính xác trong các câu trả lời ở đây. Tôi muốn cố gắng cải thiện chúng

Đầu tiên, như một số người đã chỉ ra, bạn có một lỗi trong mã liên quan đến câu hỏi

if [$status = 'clear' AND $pRent == 0]

nên là [lưu ý

if [$status == 'clear' AND $pRent == 0]
5 thay vì
if [$status == 'clear' AND $pRent == 0]
0 trong phần đầu tiên]

if [$status == 'clear' AND $pRent == 0]

mà trong trường hợp này là chức năng tương đương với

if [$status == 'clear' && $pRent == 0]

Thứ hai, lưu ý rằng các toán tử này [

if [$status == 'clear' AND $pRent == 0]
1] là toán tử đoản mạch. Điều đó có nghĩa là nếu câu trả lời có thể được xác định một cách chắc chắn từ biểu thức đầu tiên, thì biểu thức thứ hai sẽ không bao giờ được đánh giá. Một lần nữa, điều này không quan trọng đối với dòng đã sửa lỗi của bạn ở trên, nhưng nó cực kỳ quan trọng khi bạn kết hợp các toán tử này với các phép gán, bởi vì

Thứ ba, sự khác biệt thực sự giữa

if [$status == 'clear' AND $pRent == 0]
2 và
if [$status == 'clear' AND $pRent == 0]
3 là quyền ưu tiên toán tử của chúng. Cụ thể, tầm quan trọng là
if [$status == 'clear' AND $pRent == 0]
3 có mức độ ưu tiên cao hơn toán tử gán [
if [$status == 'clear' AND $pRent == 0]
5] trong khi
if [$status == 'clear' AND $pRent == 0]
2 có mức độ ưu tiên thấp hơn toán tử gán. Do đó, trong một câu lệnh kết hợp việc sử dụng phép gán và đánh giá logic, điều quan trọng là bạn chọn cái nào

Các ví dụ đã sửa đổi từ trang của PHP trên các toán tử logic

if [$status == 'clear' AND $pRent == 0]
0

sẽ ước tính cho

if [$status == 'clear' AND $pRent == 0]
7 và gán giá trị đó cho
if [$status == 'clear' AND $pRent == 0]
8, bởi vì
if [$status == 'clear' AND $pRent == 0]
9 có quyền ưu tiên toán tử cao hơn
if [$status == 'clear' AND $pRent == 0]
0, và do đó về cơ bản nó sẽ đánh giá như thế này

if [$status == 'clear' AND $pRent == 0]
5

tuy nhiên

if [$status == 'clear' AND $pRent == 0]
6

sẽ gán

if [$status == 'clear' && $pRent == 0]
1 cho
if [$status == 'clear' AND $pRent == 0]
8 [sau đó thực hiện thao tác
if [$status == 'clear' && $pRent == 0]
3 và đánh giá
if [$status == 'clear' AND $pRent == 0]
7] vì
if [$status == 'clear' AND $pRent == 0]
0 có mức độ ưu tiên toán tử cao hơn
if [$status == 'clear' && $pRent == 0]
3, về cơ bản đánh giá như thế này

if [$status == 'clear' AND $pRent == 0]
3

Thực tế là sự mơ hồ này thậm chí còn tồn tại khiến nhiều lập trình viên luôn sử dụng

if [$status == 'clear' AND $pRent == 0]
3 và sau đó mọi thứ hoạt động rõ ràng như người ta mong đợi ở một ngôn ngữ như C, tức là. hoạt động logic đầu tiên, sau đó chuyển nhượng

Một số ngôn ngữ như Perl sử dụng loại cấu trúc này thường xuyên ở định dạng tương tự như thế này

if [$status == 'clear' AND $pRent == 0]
5

Về mặt lý thuyết, điều này sẽ chỉ định kết nối cơ sở dữ liệu cho

if [$status == 'clear' && $pRent == 0]
8 hoặc nếu điều đó không thành công [và ở đây chúng tôi giả định rằng hàm sẽ trả về thứ gì đó có giá trị là
if [$status == 'clear' && $pRent == 0]
1 trong trường hợp đó], nó sẽ kết thúc tập lệnh bằng một thông báo lỗi. Do đoản mạch, nếu kết nối cơ sở dữ liệu thành công, thì
if [$status == 'clear' AND $pRent == 0]
00 sẽ không bao giờ được đánh giá

Một số ngôn ngữ cho phép cấu trúc này thẳng tay cấm gán trong các câu lệnh logic/điều kiện [như Python] để loại bỏ sự mơ hồ theo cách ngược lại

PHP đồng ý cho phép cả hai, vì vậy bạn chỉ cần tìm hiểu về hai tùy chọn của mình một lần và sau đó viết mã theo cách bạn muốn, nhưng hy vọng bạn sẽ nhất quán theo cách này hay cách khác

Bất cứ khi nào nghi ngờ, chỉ cần thêm vào một bộ dấu ngoặc đơn, điều này sẽ loại bỏ mọi sự mơ hồ. Những điều này sẽ luôn giống nhau

if [$status == 'clear' AND $pRent == 0]
9

Được trang bị tất cả những kiến ​​thức đó, tôi thích sử dụng

if [$status == 'clear' AND $pRent == 0]
2 hơn vì tôi cảm thấy rằng nó làm cho mã dễ đọc hơn. Tôi chỉ có một quy tắc là không kết hợp các bài tập với các đánh giá logic. Nhưng tại thời điểm đó, đó chỉ là một sở thích và tính nhất quán ở đây quan trọng hơn nhiều so với việc bạn chọn bên nào

Ngôn ngữ PHP cung cấp hai lệnh điều khiển nhánh. if-elseif-else and switch-case, same with a phép toán phụ, gọi là phép toán điều kiện. Các lệnh điều khiển rẽ nhánh chỉ là hai trong số rất nhiều lệnh điều khiển khác của PHP

ĐỘI DUNG CỦA BẢN DỊCH Ẩn

1. Giới thiệu chung về lệnh điều khiển trong PHP

2. Lệnh nhánh nếu trong PHP

3. Lệnh if-else lồng nhau, elseif

4. Phép toán điều kiện ?. trong PHP

5. Lệnh nhiều nhánh switch / case

6. Cú pháp khác của if và switch

7. Kết luận

Giới thiệu chung về các lệnh điều khiển trong PHP

Trong tất cả các ví dụ thực hiện từ đầu đến giờ, mã đều thực hiện theo trật tự tuyến tính. lệnh viết trước nào sẽ thực hiện trước

Thực hiện mã theo trật tự tuyến tính là không đủ để xây dựng tập lệnh với logic phức tạp. Ví dụ, trong nhiều trường hợp, chúng ta muốn thực hiện lệnh nếu đạt được một điều kiện nhất định, hoặc lặp lại việc thực hiện một nhóm lệnh

Để thực hiện các logic phức tạp, PHP, giống như nhiều ngôn ngữ lập trình mệnh lệnh khác, cung cấp các mệnh lệnh điều khiển [các câu lệnh điều khiển luồng]

Lệnh điều khiển thay đổi quy trình tự động thực thi mã thông thường và giúp thực thi những ý tưởng phức tạp hơn của người lập trình

PHP has the following command

  • Điều khiển rẽ nhánh nếu
  • Điều khiển bổ sung nhiều công tắc nhánh
  • Điều khiển bật trong khi
  • It set control. trong khi
  • It control for
  • foreach control
  • Điều khiển exit và return
  • Goto goto control jump to goto
  • Điều khiển kiểm tra ngoại lệ thử. chụp lấy

Các lệnh điều khiển đều thuộc nhóm mệnh lệnh [câu lệnh]. Chúng đồng thời còn là những mệnh lệnh phức tạp do chúng có thể chứa nhiều lệnh bên trong

Các lệnh điều khiển rẽ nhánh if và switch sẽ được trình bày trong bài học này. Các lệnh điều chỉnh vòng lặp sẽ học trong bài tiếp theo. Điều khiển thoát sẽ học trong bài viết về hàm. Điều khiển kiểm soát ngoại lệ sẽ học riêng trong bài học về ngoại lệ

Riêng lệnh nhảy goto không được khuyến khích sử dụng do nó phá vỡ cấu trúc tính toán của mã. Vì vậy chúng ta sẽ không xem xét lệnh này

Lệnh rẽ nhánh nếu trong PHP

Vui lòng xem ví dụ sau đây

if [$status == 'clear' && $pRent == 0]
1

Trong ví dụ trên chúng ta sử dụng hàm

if [$status == 'clear' && $pRent == 0]
23. Hàm này trả về vị trí cuối cùng mà xâu con $needle xuất hiện trong xâu lớn nhất $haystack. Nếu không tìm thấy xâu con, hàm sẽ trả về false

Chúng ta sử dụng hàm stripos[] để kiểm tra tên người dùng đăng nhập. nếu có cụm từ 'trump' thì trong lời chào đặc biệt; . Tức là, lệnh thực thi sẽ phụ thuộc vào tên cuộc gọi có chứa cụm từ 'trump' hay không

Kết quả chạy chương trình với hai dữ liệu khác nhau

if [$status == 'clear' && $pRent == 0]
2

If quen thuộc với C, bạn sẽ thấy cấu trúc này hoàn toàn tương tự

if [$status == 'clear' && $pRent == 0]
4

in which

  • Biểu thức phải được sửa đổi về giá trị boolean. Thực tế, PHP có thể tự động chuyển đổi các giá trị khác về kiểu boolean. Ví dụ, 0 về false, null string về false, v. v
  • Biểu thức phải được đặt trong dấu ngoặc kép []. Vòng trích dẫn thiếu cặp sẽ dẫn đến lỗi cú pháp
  • If after if have many command, they must set in the cặp dấu {}. Các lệnh nằm trong cặp {} tạo thành một khối mã [code block]. If after if only have a command, not need to cặp {}

Trong ví dụ này, bạn cũng đã thấy mã khối sau của lệnh nếu còn từ khóa khác và một mã khối nữa. Mã khối và từ khóa khác này là một mệnh đề [mệnh đề] khác của lệnh nếu

Nếu sử dụng sơ đồ khối [biểu đồ luồng], lệnh if-else được biểu diễn như sau

Ở đây luồng thực thi phân chia làm hai và chỉ thực hiện theo một trong hai đường, nên lệnh if-else còn được gọi là lệnh rẽ nhánh

Như đã nói, khi biểu thức của if tính ra giá trị đúng thì thực hiện khối mã của if. Trong trường hợp còn lại [biểu thức của if tính ra sai] thì sẽ thực thi mã khối của other

Các lệnh if-else lồng nhau, elseif

Do if-else cũng chỉ là các lệnh, bạn có thể lồng các lệnh if-else với nhau nếu cần diễn đạt những logic phức tạp hơn. Ví dụ

if [$status == 'clear' && $pRent == 0]
5

Trong ví dụ này, tùy thuộc vào tên người nhập chúng ta sẽ đưa ra lời chào nhau. Ví dụ, tên trump sẽ nhận được lời chào ‘Mr. tổng thống. ’, tên obama sẽ nhận được lời chào ‘Mr. Obama. Rất vui được gặp bạn. ’. If enter a outside the name has been known before [trump, obama, bush, clinton] thì lời chào chung là ‘Welcome to PHP’

Rất dễ thấy việc lồng các lệnh if – other như trên rất khó đọc

You could write back script on as after

if [$status == 'clear' && $pRent == 0]
6

Ở đây chúng ta vận dụng một mệnh đề đặc biệt của lệnh if-else. đề khác nếu

Về mặt ý nghĩa nó giống như cách bạn lồng một lệnh nếu mới trong mệnh đề khác của lệnh nếu bên ngoài. Tuy nhiên, mệnh đề otherif giúp mã dễ đọc dễ theo dõi hơn nhiều

Nếu sử dụng sơ đồ khối, bạn có thể biểu diễn lệnh if-elseif-else như sau

Một cách khác tốt hơn để giải quyết các vấn đề tương tự là sử dụng lệnh switch-case. Chúng ta sẽ xem xét trường hợp chuyển đổi ở phần sau của bài học

Cùng lấy một ví dụ khác

if [$status == 'clear' && $pRent == 0]
7

Trong ví dụ này, bạn yêu cầu nhập giá trị tuổi. Tùy chọn độ tuổi sẽ cung cấp thông tin tương ứng về cấp học

Ở đây các mệnh khác nếu cho phép dễ dàng phân chia tuổi thành các khoảng [. 0], [0, 2], [2, 6], [6, 12], [12, 16], [16, 18], [18…]. Nếu vẫn sử dụng lệnh if lồng nhau sẽ rất khó theo dõi

Điều kiện toán học ?. trong PHP

Construction if-else you view on is a statement, mean is it Thực hiện lệnh nhưng không trả về kết quả. Nếu bạn muốn gán giá trị cho biến tùy biến theo điều kiện cụ thể, bạn có thể sử dụng lệnh if-else như sau

if [$status == 'clear' && $pRent == 0]
8

Ở đây, thay vì trực tiếp trong lệnh echo, bạn gán giá trị cho biến $greeting tùy thuộc vào giá trị $name. Last last only play a echo command

Bạn có thể sử dụng phép toán điều kiện [toán tử có điều kiện] để đơn giản hóa công việc gán giá trị như sau

if [$status == 'clear' && $pRent == 0]
9

Đoạn mã dùng phép toán điều kiện và đoạn mã dùng lệnh nếu tương đương nhau. Chỉ là cách viết của phép toán điều kiện rút ngắn xúc tích hơn

Cú pháp chung của phép điều kiện toán học như sau

if [$status == 'clear' AND $pRent == 0]
0

Theo đó, nếu biểu thức logic nhận giá trị đúng thì biến $kết quả sẽ nhận giá trị 1, ngược lại sẽ nhận giá trị 2

Phép toán điều kiện là phép toán ternary [phép toán có 3 hạng hạng] duy nhất trong PHP

Lệnh chuyển đổi nhiều nhánh / trường hợp

Khi có nhiều điều kiện khác nhau, bạn có thể lồng các lệnh cho nhau hoặc sử dụng các mệnh đề khác nếu như trên

Để đơn giản hơn nữa trong công việc viết các lệnh nhiều nhánh, PHP cung cấp một lệnh đặc biệt. lệnh switch – case

Vui lòng xem ví dụ sau đây

if [$status == 'clear' AND $pRent == 0]
1

Trong cấu trúc này, PHP sẽ lấy biểu thức của công tắc lệnh và lần so sánh với hằng số của từng 'trường hợp'. Nếu khớp với hằng số của trường hợp bất kỳ thì lệnh đi sau trường hợp đó [cho đến lệnh ngắt tương ứng] sẽ được thực thi

Bạn có thể cấu hình switch-case-default trong ví dụ trên giống như một hệ thống if-elseif-else. Trong đó, mỗi trường hợp tương đương với biểu thức so sánh bằng ở mỗi mệnh đề khác, và phần mặc định tương tự như mệnh đề khác

Phần mặc định không bắt buộc trong cấu trúc switch – case. Nếu có mặt mặc định và biểu thức KHÔNG so khớp được với bất kỳ trường hợp nào thì mã khối mặc định sẽ được thực thi

If NOT has the default and the expression NOT so match being with any case any, then not any case any are done thi

Từ khóa break ở mỗi trường hợp chắc chắn rằng, nếu tìm thấy một trường hợp phù hợp [và thực thi xong phần mã khối tương ứng], PHP sẽ thoát khỏi lệnh break mà không tiếp tục kiểm tra các trường hợp tiếp theo

Từ khóa ngắt ở mỗi trường hợp không bắt buộc. Tuy nhiên, bạn nên sử dụng ngắt cho từng trường hợp. Các IDE cũng đưa ra thông báo nếu bạn quên ngắt một trường hợp

Điều gì xảy ra nếu bạn bỏ ngắt?
Nếu trong một trường hợp nào đó bạn không sử dụng ngắt, và giá trị biểu thức khớp với hằng số của trường hợp đó, đầu tiên . Tuy nhiên, sau đó PHP vẫn sẽ tiếp tục xử lý giá trị biểu thức để khớp với hằng của trường hợp tiếp theo. Điều này thường dẫn đến thao tác so sánh dư thừa, vì switch-case thường được thiết kế để mỗi lần chạy chỉ có 1 trường hợp được thực hiện.

Nếu bạn cần mô phỏng điều kiện 'hoặc' – thực thi mã khối nếu biểu thức có giá trị 1 HOẶC giá trị 2 HOẶC giá trị 3, bạn cần sử dụng một kỹ thuật khác của switch-case

Please view ví dụ sau

if [$status == 'clear' && $pRent == 0]
20

Trong trường hợp này, nếu $name có giá trị 'trump', hoặc 'obama', hoặc 'bush' sẽ đồng loạt kích hoạt một nhóm lệnh. Cách sử dụng trường hợp như vậy có tên gọi là rơi qua [trượt qua]. Khi sử dụng không thành công, bạn nên viết bình luận bên cạnh để tránh lộn xộn

Cú pháp khác của if và switch

Cách viết khối mã thân của lệnh if-else và switch-case as on được tham khảo từ lối viết tương ứng của C. You can continue use normal

Tuy nhiên, khi trộn mã PHP với văn bản và bản khác [chẳng hạn như HTML], hãy tiếp tục viết mã khối với các dấu ngoặc nhọn tương đối khó theo dõi

PHP cung cấp một cú pháp khác để viết các cấu trúc này. Please view ví dụ sau

if [$status == 'clear' && $pRent == 0]
21

Trong cú pháp này không sử dụng cặp dấu ngoặc kép {} để phân tích mã khối mà sử dụng dấu hai chấm

if [$status == 'clear' && $pRent == 0]
24. Khối mã kết thúc với từ khóa endif. Sau dấu hai chấm và trước từ khóa tiếp theo [elseif hoặc other] sẽ là mã khối. Loại cú pháp này rất tiện lợi để chèn các đoạn văn bản HTML vào thân của lệnh

Chủ Đề