Các ví dụ về mã PHP mà chúng ta đã thấy cho đến nay là các tập lệnh một câu lệnh xuất ra một chuỗi văn bản đến trang web hoặc một loạt các câu lệnh sẽ được thực hiện lần lượt theo thứ tự. Nếu bạn đã từng viết chương trình bằng các ngôn ngữ khác (như JavaScript, Objective-C, Ruby hoặc Python), bạn đã biết rằng các chương trình thực tế hiếm khi đơn giản như vậy.
PHP, giống như bất kỳ ngôn ngữ lập trình nào khác, cung cấp các phương tiện cho phép bạn ảnh hưởng đến luồng điều khiển. Đó là, ngôn ngữ chứa các câu lệnh đặc biệt mà bạn có thể sử dụng để đi chệch khỏi trật tự thực thi lần lượt khác đã thống trị các ví dụ của chúng ta cho đến nay. Những tuyên bố như vậy được gọi là cấu trúc điều khiển . Không hiểu sao? Đừng lo lắng! Một vài ví dụ sẽ minh họa nó một cách hoàn hảo.
Câu Lệnh if
Cấu trúc điều khiển cơ bản nhất và thường được sử dụng nhất là câu lệnh. Dòng chảy của một chương trình thông qua một tuyên bố có thể được hình dung như thế này:ifif
Đây là một câu lệnh trông như thế nào trong mã PHP:if
if(condition){
⋮ conditional code to be executed if condition is true
}
Cấu trúc điều khiển này cho phép chúng ta yêu cầu PHP thực thi một tập hợp các câu lệnh chỉ khi một số điều kiện được đáp ứng.
Ví dụ: chúng tôi có thể muốn tạo một trò chơi bắt chước trò súc sắc và trong đó bạn phải quay sáu để giành chiến thắng. Cuộn xúc xắc có thể được mô hình hóa bằng chức năng chúng ta đã sử dụng trước đó và đặt mức tối thiểu và tối đa từ 1 đến 6:rand()
$roll=rand(1,6);
echo'You rolled a '.$roll;
Để in một tin nhắn nếu người chơi cuộn sáu và thắng, bạn có thể sử dụng một tuyên bố:if
Được sử dụng trong điều kiện trên là toán tử bằng , được sử dụng để so sánh hai giá trị để xem chúng có bằng nhau không. Một đẳng thức duy nhất được sử dụng để gán và không thể được sử dụng để so sánh.===
Câu lệnh sử dụng dấu ngoặc nhọn và để bao quanh mã bạn muốn chạy khi điều kiện được đáp ứng. Bạn có thể đặt bao nhiêu dòng mã tùy thích giữa các dấu ngoặc và mã sẽ chỉ được chạy khi đáp ứng điều kiện. Bất kỳ mã nào được đặt sau dấu ngoặc đóng ( ) sẽ được chạy mọi lúc:if{}}
$roll=rand(1,6);
echo'You rolled a '.$roll;
if($roll==6){
echo'You win!';// This line will only be printed if they rolled a 6
}
echo'Thanks for playing';// This line will always be printed
Sử dụng Double-Equals
Nhớ gõ hai lần bằng ( ). Một lỗi phổ biến trong số các lập trình viên PHP khởi đầu là nhập một điều kiện như thế này bằng một dấu bằng duy nhất:==
if($roll =6)// Missing equals sign!
Điều kiện này là sử dụng toán tử gán ( ) thay vì toán tử bằng ( ). Do đó, thay vì so sánh giá trị của số , nó thực sự sẽ đặt giá trị của thành . Giáo sư!===$roll6$roll6
Để làm cho vấn đề tồi tệ hơn, câu lệnh sẽ sử dụng thao tác gán này như một điều kiện, điều này sẽ được coi là đúng, vì vậy mã điều kiện trong câu lệnh sẽ luôn được thực thi, bất kể giá trị ban đầu của nó là gì.ifif$roll
Nếu bạn chạy , bạn sẽ thấy số ngẫu nhiên được tạo và nếu bạn chạy số đó cho đến khi bạn giành chiến thắng, bạn sẽ thấy số này trong trình duyệt:diceroll.php
You rolled a 6 You win! Thanks for playing
Điều này không đẹp lắm, nhưng vì PHP xuất ra HTML, bạn có thể thêm một số thẻ đoạn để định dạng đầu ra:
Nếu bạn chạy trang cập nhật , bạn sẽ thấy rằng nó hiện in điều này trong trình duyệt:diceroll-html.php
You rolled a 6
You win!
Thanks for playing
Điều này thân thiện với người dùng hơn nhiều. Để làm cho trò chơi trở nên thân thiện hơn với người dùng, bạn có thể muốn hiển thị một thông báo khác cho những người không quay số 6 và không giành chiến thắng. Điều này có thể được thực hiện với một tuyên bố. Câu lệnh phải tuân theo và sẽ được chạy nếu điều kiện không được đáp ứng:elseelseif
Thoát khỏi trích dẫn
Bởi vì từ này chứa một trích dẫn duy nhất, nó cần phải được thoát . Bằng cách đặt trước dấu nháy đơn với một dấu chéo ngược ( ), nó nói với PHP không phải xử lý trong khi phần cuối của chuỗi.didn't\'didn't
Với một câu lệnh khác, một (và chỉ một!) Của hai khối mã được đảm bảo để chạy. Mã trong khối sẽ chạy nếu điều kiện được đáp ứng hoặc mã trong khối sẽ chạy nếu không.ifelse
Các điều kiện có thể phức tạp hơn một kiểm tra duy nhất cho sự bình đẳng. Một tuyên bố có thể chứa nhiều hơn một điều kiện. Ví dụ, hãy tưởng tượng nếu trò chơi được điều chỉnh sao cho cả hai và đều thắng số. Các tuyên bố có thể được thay đổi để những điều sau đây:if56if
Toán tử đường ống đôi ( ) có nghĩa là hoặc hoặc. Điều kiện trên được đáp ứng nếu một trong hai biểu thức đánh giá là đúng. Điều này có thể được đọc dưới dạng nếu Nếu họ cán 6 hoặc họ đã cán 5.||
Tuy nhiên, điều này có thể được thể hiện theo một cách thậm chí tốt hơn. câu lệnh không giới hạn trong việc sử dụng toán tử equals ( ). Họ cũng có thể sử dụng toán tử lớn hơn toán tử ( ) và nhỏ hơn ( ). Câu lệnh trên cũng có thể được thực hiện với một biểu thức:if==><if
$roll > 4sẽ đánh giá là đúng nếu giá trị được lưu trong biến lớn hơn , cho phép chúng ta có 5 và 6 dưới dạng số trúng với một điều kiện duy nhất. Nếu chúng tôi muốn 4, 5 và 6 là số trúng, điều kiện có thể được thay đổi thành .$roll4$roll > 3
Giống như biểu thức ( ), có một biểu thức khác gọi là chỉ được đáp ứng khi cả hai điều kiện đánh giá là đúng. Chúng tôi có thể mở rộng trò chơi để bao gồm hai con xúc xắc và yêu cầu người chơi tung hai sáu để giành chiến thắng:or||and
Biểu thức sẽ chỉ đánh giá là đúng nếu đúng và . Điều này có nghĩa là người chơi phải lăn 6 trên cả hai con xúc xắc để giành chiến thắng trong trò chơi. Nếu chúng ta thay đổi và ( ) thành một hoặc ( ), thì người chơi sẽ giành chiến thắng nếu họ cán 6 trên một con xúc xắc.if ($roll1 == 6 && $roll2 == 6)$roll1 == 6$roll2 == 6&&||if ($roll1 == 6 || $roll2 == 6)
Chúng ta sẽ xem xét các điều kiện phức tạp hơn khi có nhu cầu. Hiện tại, một sự quen thuộc chung với các tuyên bố là đủ.if … else
orvàand
PHP cũng cho phép sử dụng thay thế và thay thế . Ví dụ:or||and&&
if($roll ==6or $roll ==5){ … }
Có một số khác biệt nhỏ giữa cách thức và công việc có thể dẫn đến hành vi bất ngờ. Nói chung, việc tránh các nhà khai thác đã đánh vần các nhà khai thác trên mạng và dính vào đường ống đôi ( ) và ký hiệu kép ( ) sẽ giúp ngăn ngừa các lỗi khó hiểu.or||||&&
Đăng nhận xét