So sánh == và === trong php
Toán tử trong PHP Show
Chào các bạn, chúng ta lại gặp nhau trong series tự học php cơ bản. Trong bài hôm nay, chúng ta sẽ tìm hiểu về toán tử trong PHP. Mặc định, PHP hỗ trợ chúng ta các loại toán tử sau: Toán tử gánToán tử này lấy giá trị của toán hạng bên phải gán cho toán hạng bên trái. VD: $a = 1; $b = "hello";Toán tử số họcLà dạng phép tính giản đơn cộng, trừ, nhân, chia trong số học. Ngoài ra còn có phép chia lấy dư (%). Được sử dụng để lấy ra đơn vị dư của 1 phép toán. $c = $a + $b; //toán tử cộng $e = 10 - 8; // toán tử trừ $d = $e * 2; // toán tử nhân $h = 9 / 3; //toán tử chia $k = 10 % 3; //toán tử lấy dư (kq = 1)Toán tử so sánhLà toán tử được sử dụng để thực hiện các phép toán so sánh giữa hai toán hạng. Kết quả trả về là kiểu boolean(true hoặc false) $a = 5; // gán 5 cho $a $a == '5'; //kiểm tra giá trị của a có bằng chuỗi 5 hay không. kq: true $a !=5; //kiểm tra giá trị của a có khác 5 hay không. kq: false $a === '5'//kiểm tra $a có đồng nhất với 5 hay không. kq: false $a < 7; // kq: false $a >= 3; //kiểm tra giá trị của $a có lớn hơn hoặc bằng 3 không, kq: true $a > 7; //kq: true $a <= 4; //kq: falseCác bạn chú ý ở phép “===” và “==”: 3 dấu bằng thì so sánh cả giá trị lẫn kiểu dữ liệu, 2 dấu bằng thì chỉ so sánh giá trị. Toán tử logic trong PHP Toán tử logicToán tử logic 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ử so sánh, những biểu thức dùng toán tử logic trả về giá trị kiểu boolean(true hoặc false). Ngoài 3 toán tử trên còn có toán tử XOR nữa, nhưng ít được sử dụng nên mình không đưa vào. Các bạn có thể tự tìm hiểu thêm nếu muốn. Toán tử tăng/giảmToán tử này dùng để tăng, giảm giá trị hiện tạ lên/xuống 1 đơn vị. Sử dụng dấu ++ hoặc –. Phép toán này hay gặp trong các vòng lặp. Toán tử chuỗiToán tử này chủ yếu dùng để nối chuỗi. $a = "blogit.vn"; $b = " xin chào"; $c = $a.$b; // $c = "blogit.vn xin chào"; $c.= " các bạn!"; //$c = "blogit.vn xin chào các bạn";Ngoài các toán tử trên, còn có toán tử về mảng, phần này phức tạp hơn nên sẽ để dành cho sau này. Như vậy là chúng ta đã tìm hiểu xong các toán tử trong PHP rồi, ở bài tiếp theo mình sẽ nói về lệnh rẽ nhánh cũng như vòng lặp trong PHP. Cám ơn các bạn đã theo dõi. Nếu muốn xem đầy đủ các toán tử trong PHP thì các bạn có thể truy cập tại đây Từ khóa tìm kiếm:
Ví dụ sử dụng toán tử so sánh trong PHP với dữ liệu ban đầu như sau: So sánh ngang bằng giữa hai biến $a và $b:
Trả về true, vì giá trị chuyển đổi của biến $a từ kiểu số nguyên sang chuỗi sẽ là '3'. Ngược lại giá trị chuyển đổi của biến $b từ kiểu chuỗi sang số nguyên sẽ là 3. So sánh ngang bằng chặt giữa hai biến $a và $b:
Trả về false do hai biến $a và $b có kiểu dữ liệu khác nhau mặc dù khi chuyển đổi kiểu chúng có cùng giá trị với nhau. [Toán Tử So Sánh](https://www.codehub.com.vn/doan-ma/Toan-Tu-So-Sanh) Created by user-pfuqrli • 3 year(s) ago Cách đây 4 tháng, mình đã từng có một bài viết mang tên "Variables Comparison in Javascript", bài viết phân tích về tính falsy và truthy trong Javascript, cũng như những cạm bẫy thường gặp khi thực hiện các phép so sánh thông thường. Lần này mình tiếp tục thực hiện chủ đề tương tự, nhưng với một ngôn ngữ khác: PHP, ngôn ngữ lập trình web phổ biến nhất thế giới hiện nay. Bạn có thể code PHP, có thể sử dụng Framework này, Framework kia, nhưng liệu bạn đã thực sự hiểu hết về meta của nó, bạn có thực sự nắm rõ được tính falsy và truthy, hay những phép so sánh của PHP. Do you really know PHP ? Can you solve the following quizes ?Tương tự với bài viết "Variables Comparison in Javascript" trước đây, mình sẽ lại mở đầu bài viết về PHP lần này bằng một số "câu đố" nho nhỏ. Câu hỏi rất đơn giản thôi, Các phép toán dưới đây trả về true hay false Chú ý: Phiên bản PHP được sử dụng là phiên bản mới nhất ở thời điểm hiện tại, tháng 9/2015, tức PHP 5.6 nhé false == false 1 == "1" 0 == "0" "0" == "-0" 0 == false "0" == false "-0" == false "0.0" == false 10 == "10tran duc thang 10" "thang" == 0 "thang" == "0" [] == false null == [] null == "" null == 0 null < -1 [] == 0 [] == "" 1 == "1 " "1" == "1 " "10" == " 10" "100" == "1e2" "1000" == "0x3e8" "345" == "0345" 345 == 0345 "345" < "0346" [1] == 1 (int) [1] == 1 (int) [0] == 0 false < -INF false < NAN true < INF [1] == [1] [1, 2] == [1 => 2, 0 => 1] [1, 2] === [1 => 2, 0 => 1] [1, 2] > 3 [1, 2] > "[1, 2]" [1, 2] > [3] [1, 2] > [2, 1] (object) [1] > [1]Nếu bạn có thể trả lời đúng hết, và hiểu được bản chất tại sao nó lại như vậy thì có lẽ bạn cũng đã nắm rõ hết được những gì mà bài viết này đề sẽ cập đến rồi. Còn ngược lại, hãy dành chút thời gian để đọc và tìm hiểu về những điều sẽ được giới thiệu dưới đây, bạn sẽ tự tìm được lời giải thích cho từng đáp án. Let's start! Variable TypesĐể trả lời được những câu hỏi trên thì trước hết ta cần phải tìm hiểu và nắm rõ được về những kiểu giá trị có trong PHP. Các kiểu giá trị trong PHP
Một số điều cần lưu ý
Cũng giống như Javascript hay nhiều ngôn ngữ lập trình khác, để so sánh "bằng" trong PHP, ta có thể dùng == và ===. ===, Strict Comparison hay Strict Equal, sẽ so sánh cả kiểu giá trị của 2 bên. Nếu 2 bên có kiểu giá trị khác nhau thì phép toán sẽ trả về giá trị false. Phép toán === là rất minh bạch và dễ sử dụng, ít gây hiểu nhầm hay khó khăn gì cho lập trình viên. Còn phép so sánh ==, Loose Comparison hay Loose Equal, thì sẽ tìm cách đưa 2 bên về cùng một kiểu giá trị rồi thực hiện phép so sánh. Ta có thể dùng phép ép kiểu giống với C để đưa một biến từ kiểu giá trị này thành kiểu giá trị khác: (boolean) 1 (string) 10 (int) "100" (int)[1]Những giá trị được coi là falseĐó là những giá trị khi được ép về kiểu Boolean sẽ cho giá trị là false. Bao gồm:
Ví dụ 0.0 == false; "0" == false; $a = new SimpleXML(''); $a == false;Ngoài những giá trị là false kể trên, thì tất cả các giá trị khác đều được coi là true. So sánh trong PHPTrong phần này, chúng ta sẽ tìm hiểu về một số trường hợp, hay quy tắc đặc biệt khi thực hiện các phép so sánh == hay <, > trong PHP. Một số trong đó có thể gây bất ngờ cho bạn đấy. Null vs String
Boolean & Null
String vs String
Number vs String
Array vs Array
Object vs Object
Other
Fun fact
Phép toán $x = $a ? $a : $b; có thể được viết ngắn lại thành $x = $a ?: $b;
Mới nhìn qua, có thể bạn sẽ trả lời kết quả là false, với thứ tự thực hiện phép toán là true ? (false) : (true ? false : true), tuy nhiên thứ tự đúng sẽ phải là (true ? false : true) ? false : true, và do đó, phép toán sẽ trả về true. The AnswersDưới đây là đáp án cho những câu hỏi được đưa ra ở đầu bài viết. Nếu bạn đã đọc hết phần phía trên rồi thì chắc có thể hiểu được tại sao nó lại ra được đáp án như dưới đây. Còn nếu có câu nào mà bạn vẫn chưa hiểu được nguyên nhân thì điều đó có nghĩa là bạn đã bỏ sót điều gì đó rồi đấy, kéo lên đọc lại thôi (honho) Nếu có thắc mắc gì hãy để lại tin nhắn ở phần comment nhé. false == false 1 == "1"; 0 == "0"; "0" == "-0"; 0 == false; "0" == false; "-0" == false; "0.0" == false; 10 == "10tran duc thang 10"; "thang" == 0; "thang" == "0"; [] == false; null == []; null == ""; null == 0; null < -1; [] == 0; [] == ""; 1 == "1 "; "1" == "1 "; "10" == " 10"; "100" == "1e2"; "1000" == "0x3e8"; "345" == "0345"; 345 == 0345; "345" < "0346"; [1] == 1; (int) [1] == 1; (int) [0] == 0; false < -INF; false < NAN; true < INF; [1] == [1]; [1, 2] == [1 => 2, 0 => 1]; [1, 2] === [1 => 2, 0 => 1]; [1, 2] > 3; [1, 2] > "[1, 2]"; [1, 2] > [3]; [1, 2] > [2, 1]; (object) [1] > [1];Bài viết chắc vẫn chưa thể cover hết được những vấn đề trong các phép toán so sánh trong PHP. Ngoài ra nhiều chỗ mình cũng viết dựa trên kinh nghiệm và những gì mình biết. Có thể còn có nhiều chỗ thiếu sót, hy vọng nhận được ý kiến đóng góp của các bạn |