2011-12-29 28 views
17

thể trùng lặp:
Why does PHP consider 0 to be equal to a string?So sánh chuỗi php với 0 số nguyên trả về true?

Tôi có đoạn mã này:

$o['group'] = "prueba"; 
if($o['group'] == 0){ 
    die("test"); 
} 

Tại sao nó kiểm tra in? làm thế nào có thể có thể là một chuỗi bằng không?

+1

Trong PHP, chuỗi rỗng, và chuỗi ' "0"' cả hai sẽ được bằng không với các nhà điều hành bình đẳng ('=='). –

+0

không phải là một chuỗi rỗng. –

+6

@MichaelMior: Và bất kỳ chuỗi nào khác không thể chuyển đổi thành một số. –

Trả lời

18

nếu bạn muốn nó chính xác phù hợp với chuỗi thử sử dụng chính xác typof ba dấu bằng như vậy
if($o['group'] === 0){
các == sẽ luôn luôn đánh giá đúng khi so sánh một chuỗi để một số nguyên của 0

'a string' == 0 cũng được đánh giá là true vì bất kỳ chuỗi nào được chuyển đổi thành một số nguyên khi được so sánh với một số nguyên. Nếu PHP không thể chuyển đổi đúng chuỗi thì nó được đánh giá là 0. Vì vậy 0 bằng 0, tương đương với giá trị đúng.

Từ here

+1

Vẫn sai. ''0.1e2' == 0' là sai mặc dù' (int) '0.1e2' === 0' là đúng. Nội dung chuỗi xác định loại dữ liệu nào (* int * hoặc * float *) chuỗi được chuyển đổi thành. – Gumbo

+0

Vâng, điều này vẫn còn sai. Chỉ hoạt động nếu $ o ['group'] == '0' –

Các vấn đề liên quan