Hướng dẫn dùng output control trong PHP
Trong bài này chúng ta cùng nhau tìm hiểu sâu về cách thiết lập flow hoạt động của một trương trình PHP nhé. Show ExpressionsTa hãy bắt đầu với phần cơ bản nhất của mọi ngôn ngữ lập trình nào, đó là: expressions. TRUE or FALSE?Một giá trị boolean cơ bản thì có giá trị là True hoặc False. Ví dụ, biểu thức 20 > 9 thì trả về True, và biểu thức 5 == 6 thì trả về False. Ngoài ra bạn có thể kết hợp nhiều toán tử boolean cổ điển khác như là AND, OR, hay XOR.
Thẻ
Ta xem thêm một ví dụ khác về biểu thức Boolean, dưới đây:
Ta thu được output như sau:
Chú ý rằng, trong một số ngôn ngữ khác, FALSE có thể được định nghĩa là 0 hoặc thậm chí là -1, do đó bạn nên kiểm tra lại document xem ngôn ngữ đó đang định nghĩa như thế nào nhé. Thông thường đối với biểu thức Boolean, ta chỉ quan tâm tới nó là true hoặc false, chứ cũng hiếm khi quan tâm giá trị bên trong của nó là gì. Literals and VariablesLiteral có nghĩa đơn giản đó là một giá trị nào nào đó, ví dụ như số 73, hay string "Hello". Còn variable thì có ký tự đô la phía trước, chứa một giá trị nào đó. Biểu thức đơn giản nhất là biểu thức chỉ bao gồm một Literal hay một Variable. Dưới đây là ví dụ về 3 literal và 2 variable:
Do FALSE không trả về giá trị nên ta thu được kết quả như sau:
Ta có thể kết hợp với các toán tử khác để tạo thành các
OperatorsPHP cung cấp rất nhiều các toán tử mạnh mẽ khác nhau như là arithmetic, string, logical, assignment, comparison
... vv . Mỗi toán tử sẽ nhận một số toán hạng khác nhau:
Operator PrecedenceNếu tất cả các toán tử có cùng một mức độ ưu tiên, chúng sẽ xử lý theo thứ tự lần lượt từ trái qua phải. Trên thực tế, có khá nhiều toán tử có mức độ ưu tiên giống nhau. Ví dụ:
Ở 3 biểu thức trên ta thấy rằng chúng đều có kết quả là 7, bởi vì các toán tử Cộng và Trừ có độ ưu tiên giống nhau (nên sẽ xử lý từ trái qua phải). Ta có thể thử tương tự với phép nhân và phép chia:
Và kết quả in ra của 3 biểu thức trên cũng đều là 7.5. Tuy nhiên, kết quả sẽ thay đổi nếu ta kết hợp các toán tử với độ ưu tiên khác nhau:
Nếu không có các toán tử ưu tiên khác nhau, 3 biểu thức trên sẽ có kết quả lần lượt là 25, -29, và 12. Nhưng do phép nhân và phép chia có độ ưu tiên cao hơn phép cộng và trừ, cho nên ta có thể thêm các dấu ngoặc đơn như dưới đây để dễ hiểu hơn:
PHP sẽ thực thi các biểu thức con trong dấu ngoặc đơn trước, ta thu được như sau:
Kết quả cuối cùng của các biểu thức này lần lượt là –13, –57 và 6 (hoàn toàn khác với kết quả của 25, –29 và 12 mà chúng ta đã thấy nếu không có toán tử ưu tiên khác).
Sau khi chèn dấu ngoặc đơn để thay đổi độ ưu tiên như trên, ta có kết quả lần lượt là 25, -29 và 12. AssociativityỞ trên chúng ta đã xem xét một số toán tử thực thi từ trái qua phải, (Ngoại trừ trường hợp kết hợp với các toán tử có độ ưu tiên cao hơn). Tuy nhiên, cũng có những toán tử yêu cầu thực thi từ phải qua trái và trình tự xử lý này gọi là tính liên kết (associativity) của toán tử. Đặc biệt, có một số toán tử không có tính liên kết.
Việc gán liên tiếp này chỉ có thể được thực hiện nếu phần ngoài cùng bên phải của biểu thức được thực thi trước, sau đó tiếp tục được xử lý
từ phải qua trái.
Relational OperatorsToán tử quan hệ (Relational Operators) sẽ trả lời các câu hỏi như là "Biến này có giá trị bằng 0 không?" và "Biến nào có giá trị lớn hơn?" ... Các toán tử này sẽ kiểm tra 2 toán hạng, và trả về kết quả boolean là TRUE hoặc FALSE. Có 3 loại toán tử quan hệ đó là: equality, comparison, và logical. EqualityCó thể bạn đã thấy ở các phần trước, toán tử bằng (Equality) có ký hiệu là
Ta thấy rằng, bằng cách trả về TRUE hoặc FALSE, toán tử bằng cho phép ta kiểm tra các điều kiện bằng cách sử dụng lệnh if. Do PHP là loại ngôn ngữ "lỏng lẻo", cho nên nếu 2 toán hạng của biểu thức so sánh bằng, mà lại có kiểu khác nhau, thì PHP sẽ tự động chuyển đổi chúng thành kiểu phù hợp nhất. Bên cạnh đó thì ta hiếm khi sử dụng toán tử identity (gồm 3 dấu bằng ===), toán tử này so sánh các item với nhau mà không thực hiện
convert.
Thoạt nhìn, đây là 2 string khác nhau thì sẽ không thể bằng nhau, tuy nhìn khi chạy, ta có output in ra là 1. Điều này có nghĩa là cậu lệnh
Khi chạy code, ta thấy rằng câu lệnh if đầu tiên đã không in ra output là 1, bởi ví nó đang so sánh dưới dạng số. Thay vào đó, kết quả in ra là 2 bởi vì nó đang so sánh dạng chuỗi. Comparison operatorsNgoài việc so sánh bằng nhau, và không bằng nhau, PHP còn cung cấp nhiều toán tử so sánh khác như là: > (lớn hơn), < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng)...
Trong ví dụ trên, ta có giá trị của $a là 2, $b là 3 nên output in ra là:
Logical operatorsToán tử logic (Logical operators) sẽ return về kết quả là TRUE hoặc
FALSE, cho nên nó còn được gọi là toán tử Boolean. Chú ý rằng, các toán tử bên trên có thể viết bằng chữ thường, hoặc chữ hoa. Ta có ví dụ dưới đây:
Ta thu được output lẫn lượt là, không có gì, 1, 1, không có gì. Điều này có nghĩa là câu lệnh echo thứ 2 và thứ 3 có kết quả là TRUE, các câu lệnh echo còn lại có giá trị FALSE nên không in ra cái gì. Câu lệnh AND sẽ trả về TRUE, nếu
cả 2 toán hạng là TRUE, trong khi đó câu lệnh thứ 4 là thực hiện phủ định giá trị của $a, nên trả về kết quả FALSE.
Nếu bạn cần function
Trong trường hợp này, code sẽ thự thi function
Dưới đây là bảng tổng hợp kết quả khi kết hợp các toán tử
bằng toán tử logic. Một điều bạn cần nhớ rằng, !TRUE thì sẽ bằng với FALSE, và !FALSE sẽ bằng với TRUE. Hết. Chúng ta sẽ cùng nhau tìm hiểu các chủ đề khác về PHP ở các bài viết lần tới nhé. |