Érdekes PHP kód


1
2
3
4
5
6
7
8
<?php
$a = 'string';
$b = 0;
 
if ( $a == true && $b == false && $a == $b )
{
    echo ( 'universe broken' );
}

Mindenki tippelje meg, hogy fogjuk -e látni valaha a feliratot.

Update:
Én ugyan skype – on kaptam a de az egyik szemfüles kommentelő megtalálta az eredetijét a dolognak.
http://www.otton.org/2008/08/06/stupid-php-tricks-true-false-comparison/. Köszönet KisPocok.

Kapcsolódó bejegyzések:
  • Az alábbi JavaScript kód segítségével könnyedén ellenőrizhetjük, hogy a megadott e-mail cím formailag helyes-e. A function TRUE vagy FALSE értékkel tér vissza. ( …

  • Amikor regisztrálsz egy weboldalon, az oldal általában leellenőrzi, hogy a beírt e-mail címed szabályos formátumú-e. Ehhez szükségünk van egy sztringre (pl.: $em …

  • Ez most csak egy gyors hír lesz, de letölthető a WordPress 3.0, úgyhogy irány a hivatalos honlap! :) link: WordPress 3.0 letöltés

  • Ez a segédlet arra hivatott, hogy megismertesse, hogy tudsz olyan Flash animációt létrehozni, ami több ugyanolyan MovieClipből áll és mindegyik ugyanolyan tulajd …

  • Egy egész jól összeszedett lista különböző, a wordpress blogmotorral megtehető módosításról (hívhatjuk hack-nek, trükknek is). Nekem több olyan rész is volt benn …

A cikket beküldte: TLoF (http://tlof.hu)

8 hozzászólás

  1. Sony500 says:

    Természetesen nem, hiszen nincs lezárva a php-tag. ;)

  2. Sony500 says:

    Bocsánatot kérek.

  3. glex says:

    Nem kötelező a lezárás ;)

    Amúgy ez a “hiba” onnan fakad, hogy a PHP típus nélküli változókat használ. Menet közben konvertálja a típusokat.

    kezdjük az elején:
    – $a == true
    Ez egyszerű:) Minden string ami nem nulla hosszúságú true.

    – $b == false
    Naggyon egyszerű :) A 0 numerikus érték a hamis az 1 igaz.

    – $a == $b
    Ezen kicsit gondolkodtam, de aztán rájöttem :)
    a $a stringet megpróbálja numerikus értékké konvertálni (azért nem a $b próbálja meg stringgé mert a numerikus értéket gyorsabban tudja összehasonlítani). A ‘1234’ stringet lazán át tudná konvertálni ezerkettőszázharmincnéggyé, de mivel a ‘string’ kifejezésben nincsenek numerikus karakterek, ezért a konvertálás után 0 lesz az értéke (olyan mint az intval).
    Tehát 0 == 0!

    gondolom a fenti kis kódot ez ihlette:
    http://uk.php.net/manual/hu/types.comparisons.php

    :)

  4. TLoF says:

    Nem kell lezárni a php tagot. Ezt a php megteszi automatikusan helyettünk, ha EOF jelet talál a fileban. Nagyobb projektnél kifejezetten előnyös, mert nem mennek el fél órák azzal, hogy vajon hol maradt egy szóköz a ?> jel után.

  5. KisPocok says:

    Lopni nem ér.

    http://www.otton.org/2008/08/06/stupid-php-tricks-true-false-comparison/

  6. TLoF says:

    Kispocok: Köszönöm, frissitettem a bejegyzést.

  7. Salaander says:

    Olvasom itt a hozzászólásokat és látom milyen magyarázatok születnek.
    A legegyszerűbb és szerintem legigazabb az hogy rossz a php kód. Logikai hiba.
    Mert amennyire tudom és ahogy én szoktam logikai kifejezéseket 3db egyenlőség jellel kell összehasonlítani, különben az nem jó eredményt ad.

    Azért ki is próbáltam és igazam van a helyes kód már ad hibás eredményt.
    if ( $a == true && $b == false && $a === $b )

    Remélem helyen gondolom :)

  8. Semmu says:

    de így csak azért nem teljesül a feltétel, mert a 3 = jel a típust is nézi, nem konvertál :)

Szólj hozzá
a Érdekes PHP kód c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>