PHP: true == false

August 9, 2008 by Bảo
Filed under: Programming 

Một đoạn code ngớ ngẩn chứng minh true == false trong PHP :D

$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

  1. hiendt on Sat, 9th Aug 2008 6:14 pm
  2. 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.

  3. Nguyen Trung Liem on Sat, 9th Aug 2008 7:53 pm
  4. 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

  5. Bảo on Sun, 10th Aug 2008 4:50 pm
  6. Cái này không phải là true && false mà là :

    $a == true : true
    $b == false : true
    $a == $b : true

    ==> true == false

  7. BetaK102 on Tue, 19th Aug 2008 4:57 pm
  8. 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!





:D :) ^_^ :( :o :shock: 8) ;-( :lol: xD :wink: :evil: :p :whistle: :woot: :sleep: =] :sick: :straight: :ninja: :love: :kiss: :angel: :bandit: :alien: