Ở bài trước chúng ta đã tìm hiểu các kiểu dữ liệu trong php, vậy thì trong bài này chúng ta sẽ đi vào sâu hơn trong lập trình php, đó là toán tử và biểu thức trong php. Nội dung như sau:

  • Biểu thức là gì ?.
  • Toán tử quan hệ (Relational Operators).
  • Toán tử luận lý (Logical Operators).
  • Độ ưu tiên các toán tử

Nội dung chính

  • 1. Biểu thức là gì?
    • Toán tử gán (Assignment Operator):
    • Biểu thức số học
  • 2. Toán tử quan hệ
  • 3. Toán tử luận lý
    • Độ ưu tiên toán tử luận lý
  • 4. Độ ưu tiên các toán tử
  • 5. Lời kết

1. Biểu thức là gì?

Biểu thức là một tổ hợp các toán hạng và toán tử. Toán tử thực hiện các thao tác như cộng, trừ, nhân, chia, so sánh, … Toán hạng là những biến hay là những giá trị mà các phép toán được thực hiện trên nó. Ví dụ $a + $b thì $a và $b được gọi là toán hạng, dấu + được gọi là toán tử, cả 2 kết hợp lại thành một biểu thức ($a + $b).

Mỗi biểu thức chỉ có một giá trị nhất định. Ví dụ ta có biểu thức ($a + $b)  thì biểu thức này có giá trị là tổng của $a và $b.

Ví dụ:

1
2
3
$ketqua = $a - $b;
$ketqua = 7 + 6;
$ketqua = 3*$x + 4*$y;

 

Toán tử gán (Assignment Operator):

Đây là toán tử thông dụng nhất trong mọi ngôn ngữ, ta dùng dấu = để gán giá trị cho một biến bất kỳ nào đó.

1
$a = 12;

Nhiều biến có thể được gán cùng một giá trị qua một câu lệnh đơn gọi là gán liên tiếp.

 

 

1
$a = $b = $c = $d = 12;

 

Biểu thức số học

Các phép toán thường được thực hiện theo một thứ tự cụ thể gọi là độ ưu tiên để đưa ra giá trị cuối cùng (sẽ đề cập đến sau). Các biểu thức số học trong các ngôn ngữ được thể hiện bằng cách sử dụng các toán tử số học cùng với các toán hạng dạng số hoặc ký tự (biến). Những biểu thức này gọi là biểu thức số học.

 

1
2
3
$ketqua = $a + $b/2;
$ketqua = $a / 7;
$ketqua = $a + ($b = 5 + 6);

 

Như ta thấy trên toán hạng có thể là hằng, biến hay kết hợp cả 2, và mỗi biểu thức có thể kết hợp của nhiều biểu thức con. Định nghĩa hằng và biến như thế nào chúng ta đã đề cập ở Biến Và Hằng Số Trong PHP.

2. Toán tử quan hệ

Toán tử quan hệ cũng là một định nghĩa trong bài toán tử và biểu thức trong php, được dùng để kiểm tra mối quan hệ giữa hai biến hay giữa một biến và một hằng số. Ví dụ kiểm tra 2 biến $a và $bxem biến nào lớn hơn ta làm như sau: ($a > $b) và kết quả của biểu thức này sẽ trả về kiểu boolean TRUE hoặc FALSE.

Như tôi đã đề cập ở bài các kiểu dữ liệu trong php,  kiểu boolean có giá trị là FALSE cho tất cả các giá trị bằng 0, ký tự rỗng hoặc null. Để so sánh 2 toán hạng ta làm như sau ($a == $b). Các bạn lưu ý rằng phép toán mà có 1 dấu bằng là phép gán, còn 2 dấu bằng là phép so sánh.

Bảng sau đây mô tả ý nghĩa của các toán tử quan hệ.

Lưu Ý: Tất cả các toán tử quan hệ nào có 2 ký tự trở lên đều phải ghi liền không được có khoảng trắng. Ví dụ ! =  là sai vì có khoảng trắng giữa 2 ký tự.

Ví dụ:

1
2
3
4
5
$a = 12; // Biến $a kiểu INT có giá trị = 12
$t = ($a == 12); // Biến $t có giá trị là TRUE vì biểu thức (12 == 12) đúng
$t = ($a > 12);  // Biến $t có giá trị là FALSE vì biểu thức (12 > 12) sai
$t = ($a >= 12); // Biến $t có giá trị TRUE vief biểu thức (12 >= 12) đúng
$t = ($a != 12); // Biến $t có giá trị FALSE vì biểu thức (12 != 12) sai

 

Toán Tử Quan Hệ === dùng để so sánh giá trị giữa các biến và hằng đúng theo giá trị và kiểu dữ liệu của nó, nếu ta sử dụng 2 dấu bằng == để so sánh ($a == $b) thì lúc này $a và $b chỉ so sánh giá trị và trả về true nếu $a bằng $b.

Giả sử $a = ’123′ là kiểu string, $b = 123 là kiểu int thì phép ($a == $b) cho kết quả là true, còn phép ($a === $b) sẽ cho kết quả là false vì 2 biến tuy giá trị bằng nhau nhưng không cùng kiểu dữ liệu.

3. Toán tử luận lý

Toán tử luận lý là ký hiệu dùng để kết hợp hay phủ định biểu thức có chứa các toán tử quan hệ, những biểu thức dùng toán tử luận lý trả về giá trị TRUE hoặc FALSE.

Bảng sau đây mô tả các toán tử luận lý trong PHP

Lưu ý: Tất cả các toán tử luận lý nào có 2 ký tự trở lên đều phải ghi liền không được có khoảng trắng. Ví dụ | | là sai vì có khoảng trắng giữa 2 ký tự.

Ví dụ:

 

1
2
3
4
$a = 100;
$b = 200;
$tong = $a + $b;
$check = ($a < $b) && ($tong > 200);

 

Kết quả của đoạn mã trên biến $check sẽ có giá trị là TRUE vì:

  • ($a > $b) <=> (100 < 200)  => TRUE
  • ($tong > 200) <=> (300 > 200) => TRUE
  • $check = (1) && (2) <=> TRUE && TRUE => TRUE

Độ ưu tiên toán tử luận lý

Độ ưu tiên theo thứ tự như sau: NOT -> AND -> OR

Ví dụ: Tính độ ưu tiên sau ( 7 > 5 &&  !(-5 > 1) || 10 == 10 ) (1)

Bước 1: trong biểu thức  này có một phép toán NOT đó là  !(-5 > 1) nên ta tính trước phép này. Trong PHP cũng như các ngôn ngữ lập trình khác biểu thức !(biểu thức)cùng ý nghĩa với biểu thức (biểu thức) == false nên biểu thức ở trên ta biến đổi thành ( (-5 > 1 ) == false ). Biểu thức này trả về giá trị TRUE vì (-5 > 1) là sai.

Bước 2: Lấy kết quả bước 1 ta viết lại biểu thức (1) như sau: ((7>5) && true || 10 == 10) Theo độ ưu tiên thì ta tính phép AND trước tức là tính ((7 > 5) && true) trước. Phép tính này trả về TRUE bởi vì (7 > 5) = true suy ra true && true => true

Bước 3: Bước này lấy kết quả ở bước 2 ta ráp vào thì biểu thức (1) như sau: (true  || 10 == 10). Phép OR sẽ trả về TRUE nếu một trong 2 biểu thức có giá trị true => biểu thức (1) là biểu thức có giá trị TRUE.

4. Độ ưu tiên các toán tử

Độ ưu tiên các toán tử thiết lập thứ tự ưu tiên tính toán của một biểu thức. Tóm lại độ ưu tiên trong PHP đề cập đến thứ tự các phép tính mà PHP sẽ biên dịch trước. Các toán tử và biểu thức trong php có sự liên hệ lẫn nhau, toán tử kết hợp toán hạng tạo thành biểu thức.

Bảng thứ tự ưu tiên của các toán tử số học.

Những toán tử nằm cùng một hàng có cùng độ ưu tiên và cấp độ ưu tiên đi từ trên xuống dưới. Việc tính toán biểu thức số học sẽ được tính toán từ trái qua phải và ưu tiên trong ngoặc trước kết hợp với độ ưu tiên trong bảng (như trong tính toán thường thì nhân chia trước, cộng trừ sau ưu tiên trong ngoặc).

Ví dụ: $t = -8 * 4 – 3

Bước 1: tính -8 trước vì đây là oán tử một ngôi cố độ ưu tiên cao nhất. Kết quả = -8
Bước 2: -8 *4 vì phép nhân có độ ưu tiên cao hơn phép -. Kết quả = -32
Bước 3: -32 – 3: vì đây là phép cuối cùng, ko cần phải so sánh với phép tính khác nữa. Kết quả = -35

5. Lời kết

Trong bài học này các bạn được tìm hiểu các toán tử và biểu thức trong php, nó là các kiểu logic căn bản trong các ngôn ngữ lập trình, nó là tiền đề để các bạn viết những biểu thức phức tạp trong quá trình làm dự án, nếu các bạn nắm vững phần này thì tư duy các bạn sẽ lên rất cao, gặp vấn đề là có ý tưởng giải quyết ngay. Trong bài tới chúng ta sẽ tìm hiểu câu lệnh if else trong php.

190 BÌNH LUẬN

  1. Excellent weblog right here! Additionally your website loads up very fast!
    What host are you using? Can I am getting your associate hyperlink for your host?
    I desire my site loaded up as fast as yours lol

  2. We stumbled over here different website and thought I
    may as well check things out. I like what I see so now i’m following
    you. Look forward to looking at your web page
    yet again.

  3. When someone writes an paragraph he/she keeps
    the idea of a user in his/her mind that how a user can know it.
    Therefore that’s why this article is perfect. Thanks!

  4. Wow, fantastic blog layout! How long have you been blogging for?
    you make blogging look easy. The overall look of your web
    site is excellent, let alone the content!

  5. After I originally commented I appear to have clicked the -Notify
    me when new comments are added- checkbox and now whenever a comment is added I recieve
    4 emails with the exact same comment. Perhaps there is a way you are
    able to remove me from that service? Thanks!

  6. I have read several excellent stuff here. Certainly
    price bookmarking for revisiting. I surprise how much effort you put to make such a magnificent informative website.

  7. Hey there, You have done a great job. I’ll certainly
    digg it and personally suggest to my friends. I’m sure they’ll be benefited from this web site.

  8. A fascinating discussion is worth comment. I do think that you need
    to write more about this issue, it might not be a taboo matter but typically folks
    don’t talk about such subjects. To the next! Cheers!!

  9. I’m really impressed along with your writing abilities as well as with the format on your blog.
    Is this a paid topic or did you modify it yourself? Anyway keep up the nice high
    quality writing, it’s uncommon to see a great blog like this one today..

  10. Wow, incredible blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your web site is excellent, let alone the content!

  11. Thanks , I ave recently been looking for info about this subject for ages and yours is the best I have discovered till now. But, what about the bottom line? Are you sure about the source?

  12. It is really a nice and helpful piece of information. I am glad that you shared this helpful information with us. Please keep us up to date like this. Thank you for sharing.

  13. This unique blog is no doubt educating as well as diverting. I have picked helluva helpful advices out of this amazing blog. I ad love to visit it again and again. Thanks a lot!

  14. Wow, incredible blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your website is excellent, as well as the content!

  15. This is really interesting, You are a very skilled blogger. I have joined your rss feed and look forward to seeking more of your wonderful post. Also, I ave shared your web site in my social networks!

  16. This is really interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your excellent post. Also, I ave shared your web site in my social networks!

  17. Thanks on your marvelous posting! I truly enjoyed reading it, you might be a great author.I will make certain to bookmark
    your blog and may come back in the future. I want to encourage that you continue your
    great writing, have a nice day!

  18. Im no professional, but I believe you just made a very good point point. You clearly know what youre talking about, and I can seriously get behind that. Thanks for being so upfront and so genuine.

  19. Modular Kitchens have changed the very idea of kitchen nowadays since it has provided household females with a comfortable yet a classy place in which they may invest their quality time and space.

  20. Wow, marvelous blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your site is wonderful, as well as the content!. Thanks For Your article about sex.

  21. This is a good tip especially to those new to the blogosphere. Short but very accurate information Appreciate your sharing this one. A must read post!

  22. I simply could not leave your website before suggesting that I actually loved the usual information an individual supply in your guests? Is gonna be back regularly in order to inspect new posts

  23. I simply could not leave your site prior to suggesting that I extremely loved the usual information an individual supply to your guests? Is gonna be back incessantly in order to inspect new posts

  24. Wow! This can be one particular of the most useful blogs We have ever arrive across on this subject. Basically Wonderful. I am also a specialist in this topic therefore I can understand your effort.

  25. Very nice post. I just stumbled upon your blog and wanted to say that I have truly enjoyed browsing your blog posts. In any case I all be subscribing to your feed and I hope you write again very soon!

  26. Woman of Alien Ideal get the job done you might have accomplished, this page is de facto neat with excellent info. Time is God as technique for holding all the things from taking place directly.

  27. This blog is without a doubt educating and besides amusing. I have found a bunch of handy stuff out of this source. I ad love to come back again soon. Thanks a lot!

  28. Sweet blog! I found it while browsing on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I ave been trying for a while but I never seem to get there! Cheers

  29. I will immediately snatch your rss feed as I can not in finding your e-mail subscription link or e-newsletter service. Do you have any? Please let me recognise so that I may subscribe. Thanks.

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here