ugrás a tartalomhoz

Összehasonlítás különböző típusok között PHP-ben

kulcsarb · 2005. Júl. 3. (V), 13.43
Szeretném a tisztelt PHP-s közösség figyelmét kérni egy témában, amin ma kissé felhúztam magamat. Hogy lehet, hogy (php 5.0.4, xp) az alábbi kódsor:

$i=0;
if ($i=='!') echo "ddddd";

-nál az if ág true fele hajtódik végre?

tudná más is tesztelni ezt a kódsort? post a php alapól sz*r, vagy a 5.0.4 win32 a bugos, vagy mi van ilyenkor?

Köszönettel: Balázs


$i=0;
echo "0 to boolean : ". (bool) 0 ."<br>";
echo "! to boolean : ". (bool)'!' ."<br>";
if ($i!='!') echo "Fukcing PHP, $i";
if ($i=='!') echo "Fukcing PHP, $i == '!' ";
if ($i==='!') echo "Fukcing PHP, $i === '!' ";

---------------------------------
eredmény:

0 to boolean :
! to boolean : 1
Fukcing PHP, 0 == '!'
 
1

RTFM

Hojtsy Gábor · 2005. Júl. 3. (V), 13.53
Idézet az == kézikönyv oldalról:
If you compare an integer with a string, the string is converted to a number. If you compare two numerical strings, they are compared as integers.
Lásd még a comparision cheat sheet-et, vagy a vizuálisabb változatát a Blue Shoesnál.
2

Thanx

kulcsarb · 2005. Júl. 3. (V), 21.10
TFM - Control Structures - If alatt fél szó nem esik róla, köszi a linket. Lehet hogy ha jobban átrágom valahol beleakadok. Tanulság: csak tipusegyeztetés után hasonlítgatni.

Azért a php-ben az eléggé zavar, hogy nem szól egy csomó dologért, amit mondjuk C-ben kötelezően, és egyértelmüen le kell írni.....
3

RTFM ismét ;-)

Hodicska Gergely · 2005. Júl. 4. (H), 03.10
Szia!

If alatt fél szó nem esik róla

Pedig ott van egyből egy link: Converting to boolean


Másrészt:
Tanulság: csak tipusegyeztetés után hasonlítgatni.

Comparison Operators, van ott egy Identical nevű. Amire amúgy elég gyakran nincs szükség, egyszerűen ismerni kell a nyelvet.