Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwne zachowanie if(), bug?
LBO
post
Post #1





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $arr = array(0, '0', 1, '1', true, false, '', 'alpha', 'alphanumeric123');
  3. $zero = 0;
  4. print('$zero jest typu ');
  5. var_dump($zero);
  6. print(PHP_EOL);
  7. foreach ($arr as $value) {
  8. var_dump($value);
  9. if ($value == $zero) {
  10. print($value.' == 0 true'.PHP_EOL.PHP_EOL);
  11. } else {
  12. print($value.' == 0 false'.PHP_EOL.PHP_EOL);
  13. };
  14. };
  15. ?>

Wbrew moim oczekiwaniom skrypt wyswietlił:
Cytat
$zero jest typu int(0)

int(0)
0 == 0 true

string(1) "0"
0 == 0 true

int(1)
1 == 0 false

string(1) "1"
1 == 0 false

bool(true)
1 == 0 false

bool(false)
== 0 true

string(0) ""
== 0 true

string(5) "alpha"
alpha == 0 true // false?

string(15) "alphanumeric123"
alphanumeric123 == 0 true // false?


Czy mi się wydaje, ale chyba coś nie tak z ostatnimi dwoma wynikami porównania?

Pracuję na php 5.1.2, Win XP Sp2

P.S. Gdy porównuję typami (===) zjawisko znika.
Go to the top of the page
+Quote Post

Posty w temacie
- LBO   Dziwne zachowanie if()   15.05.2006, 12:29:41
- - nospor   no nie do konca jest źle. gdy porownujesz liczbe z...   15.05.2006, 12:35:53


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 00:31