PHP: true == false
Một đoạn code ngớ ngẩn chứng minh true == false trong PHP
$a = 'string'; $b = 0; if ( $a == true && $b == false && $a == $b ) { echo ( 'universe broken' ); } |
Đúng là ngớ ngẩn thiệt :
- $a == true vì $a là một chuỗi khác rỗng
- $b == false vì $b là một số = 0
- $a == $b (tức là true == false) là do $a được chuyển vê chuỗi để so sánh, vì $a không phải dạng số (numeric) nên dẫn đến $a chuyển về 0 & 0 thì bằng 0
Comments
4 Comments on PHP: true == false
-
hiendt on
Sat, 9th Aug 2008 6:14 pm
-
Nguyen Trung Liem on
Sat, 9th Aug 2008 7:53 pm
-
Bảo on
Sun, 10th Aug 2008 4:50 pm
-
BetaK102 on
Tue, 19th Aug 2008 4:57 pm
Không rành php lắm, nhưng với java, (true && false && someboolean) trả về false. Có nghĩa chỉ cần có 1 trả về false thì nó trả về false luôn.
Tôi không nghĩ là ngớ ngẩn đâu. Vì toán tử == là toán tử so sánh không strict về kiểu nên cần cast kiểu trước khi so sánh. Biểu thức trên của bạn cần cast kiểu 2 lần để có tương quan true == false thì rõ ràng là ko hợp lý. Bạn cần so sánh === để so sánh cả về kiểu nữa để tránh trường hợp cast kiểu thiếu nhất quán. PHP là ngôn ngữ weak typed mà.
Nguyen Trung Liem
http://groups.google.com/group/phpvietnam
Cái này không phải là true && false mà là :
$a == true : true
$b == false : true
$a == $b : true
==> true == false
PHP có ghi chú: 0 sẽ bằng “php”
http://vn2.php.net/manual/en/types.comparisons.php
Bài học rút ra là hãy dùng Strict comparisons
Tell me what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

