tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
333
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jul 2001
    Ort
    Bayern
    Beiträge
    969
    Hallo
    folgender Code:
    PHP-Code:
    for($i=0;$i<2;$i++)
    {
        echo 
    '$i in Schleife Wert:'.$i.'<br />';
        if(
    $i == NULL);
        {
            echo 
    '$i in if Wert:'.$i.'<br />';
        }

    gibt bei mir unter PHP 4.1.2 das aus:
    Code :
    1
    2
    3
    4
    
    $i in Schleife Wert:0
    $i in if Wert:0
    $i in Schleife Wert:1
    $i in if Wert:1
    Aber den Wert NULL gibt es doch auch in PHP, oder? Daher dürfte der Text in der if-Klausel doch nie ausgegeben werden, oder? Danke.
     

  2. #2
    Registriert seit
    Nov 2002
    Beiträge
    983
    ich glaube NULL gibt es nicht, aber _NULL_ .
    Aber wie gesagt: unter Vorbehalt
     

  3. #3
    Registriert seit
    Jul 2001
    Ort
    Bayern
    Beiträge
    969
    Wenn es NULL überhaupt nicht geben würde, dann würde ich ja einen Fehler erhalten.
     

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Weg mit dem Semikolon in der Zeile mit der if-Anweisung.
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  5. #5
    Registriert seit
    Jul 2001
    Ort
    Bayern
    Beiträge
    969
    Sorry das war ein Tippfehler. Ich habe ja nur schnell eine kleine Demo geschrieben. Das entscheidende ist, dass in der Version ohne ";" trotzdem das ausgegeben wird:
    Code :
    1
    2
    3
    
    $i in Schleife Wert:0
    $i in if Wert:0
    $i in Schleife Wert:1
    Und NULL ist ja imho nicht 0.
     

  6. #6
    Avatar von Andreas Dunstheimer
    Andreas Dunstheimer Andreas Dunstheimer ist offline Mitglied Platin
    Registriert seit
    May 2003
    Ort
    Weiterstadt, Germany
    Beiträge
    506
    Original geschrieben von Wolfsbein

    Und NULL ist ja imho nicht 0. [/B]
    genau das ist der Fall, also ist die Ausgabe des Scripts auch logisch******

    $i ist nur dann NULL wenn es überhaupt nicht gesetzt ist, aber die Zahl 0 ist ja ein Wert, sprich, die Variable ist dann gesetzt.


    Dunsti
     

  7. #7
    Registriert seit
    Jul 2001
    Ort
    Bayern
    Beiträge
    969
    Auch auf die Gefahr das ich jetzt was falsches sage, in C oder in JAVA ist das aber nicht so. Und wenn $i bei mir gesetzt ist, also im ersten Durchlauf 0 dann müsste ja
    if($i == NULL) false sein. Weil 0 ja bedeutet die Variable hat eine Wert .
     

  8. #8
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    NULL wird hier automatisch in den benötigten Typ gecastet, hier also wohl in einen Ganzzahltyp. Und als Ganzzahl ist NULL nunmal 0. Willst du eine typsichere Überprüfung, musst du als Vergleichsoperator === verwenden.
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  9. #9
    Avatar von Andreas Dunstheimer
    Andreas Dunstheimer Andreas Dunstheimer ist offline Mitglied Platin
    Registriert seit
    May 2003
    Ort
    Weiterstadt, Germany
    Beiträge
    506
    stimmt, sorry ... war Denkfehler von mir

    Du hast Recht, eigentlich dürfte das in dem IF nie ausgegeben werden******

    Ich hab das bei mir nochmal getestet und komme zur selben Ausgabe:

    Code :
    1
    2
    3
    
    $i in Schleife Wert:0
    $i in if Wert:0
    $i in Schleife Wert:1

    Schlussfolgerung: 0 ist doch kein gültiger Wert (obwohl er es eigentlich sein sollte)
    oder anders: 0 = NULL ******

    ich geb zu, dass es unlogisch ist.
    [edit] bzw. nach der Erklärung von Reima wieder logisch [/edit]

    Dunsti
     

  10. #10
    Registriert seit
    Jul 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    2.135
    Und hier was von php.net:


    Don't try to test
    if ($intSomething==NULL) {
    ...
    }
    use is_null() instead.
    The first statement misses 0 values.

    Regards,
    Calin

    [Ed. note: this is because == tests for equivalence of value, but not type. NULL evaluates to
    false, as does 0, so NULL == 0 is true--even though 0 is type int and NULL is type null.
    You should use either is_null() as noted or ===, which returns true only if its operands are
    equal and of the same type.]
     

  11. #11
    Registriert seit
    Jul 2001
    Ort
    Bayern
    Beiträge
    969
    Danke wieder was gelernt. Und ein bisschen hatte ich auch recht .
     

Ähnliche Themen

  1. Internetauftritt von NULL an.
    Von Blackhawk50000 im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 05.06.09, 17:57
  2. NULL in DB eintragen
    Von chuvak im Forum PHP
    Antworten: 1
    Letzter Beitrag: 13.01.09, 16:33
  3. SQL: NOT NULL und UNIQUE
    Von golffan007 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 26.04.05, 17:55
  4. NULL oder NOT NULL ****?
    Von KingChimera im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 24.08.03, 09:32
  5. Null = 0 ********
    Von ollek81 im Forum Coders Talk
    Antworten: 27
    Letzter Beitrag: 05.07.03, 02:44