php ist null wenn leer? [duplicate]

Lesezeit: 4 Minuten

php ist null wenn leer duplicate
Erin Tucker

Ich habe eine Frage bzgl NULL bei PHP:

  $a="";
  if($a == NULL) {
      echo 'is null';
  }

Warum sehe ich ist Null wann $a ist eine leere Zeichenfolge? Ist das ein Fehler?

php ist null wenn leer duplicate
Godwin

Was Sie suchen, ist:

if($variable === NULL) {...}

Beachten Sie das ===.
Bei Gebrauch ==wie Sie es getan haben, behandelt PHP NULL, falsch, 0der leer Schnur und leer Arrays als gleich.

  • False, Ihre Bedingung stimmt nur mit nicht initialisiert und null überein $variable. Was du willst ist eigentlich: $variable == null (beachten Sie das ==)

    – Thomas Laurent

    24. August 2016 um 18:33 Uhr


  • @ThomasLAURENT, danach hat das OP gesucht, sie haben sich gefragt warum == null entsprach der leeren Zeichenfolge und nicht nur null oder undefiniert.

    – Godwin

    24. August 2016 um 18:51 Uhr

  • Ups mein Fehler, aber dein letzter Satz hat mich denken lassen, dass NULL, false, 0 und “” waren streng gleich was falsch ist, sorry für das Missverständnis.

    – Thomas Laurent

    25. August 2016 um 21:06 Uhr

  • @James, es ist ein beabsichtigtes Verhalten in PHP, es ist auch 2017 noch wahr und wird wohl noch lange wahr sein, nehme ich an

    – Defrag

    23. Februar 2017 um 3:09 Uhr

  • $a = '' ist leer string, false ist ein boolescher Wert, $a = 0; ist eine ganze Zahl und null ist vom Typ null. Was OP sagt, ist, dass PHP sie als “gleichen” Wert, aber nicht als “gleichen” Typ einfädelt. Also ein strikt === check prüft auch den Typ und schlägt fehl, wenn Sie andere verwenden. Das ist der Grund, warum Sie in Ihren Rückgabewerten konsistent sein sollten. Wenn Sie normalerweise eine Zeichenfolge in einer Methode wie zurückgeben getName()solltest du nicht bekommen null wenn es leer ist, aber eher ein leerer Schnur $user->getName() === '' oder $user->getId() === 0 oder $user->isActive === false. Beabsichtigtes Verhalten!

    – Cagatay Ulubay

    23. Mai 2017 um 12:32 Uhr


1647937449 408 php ist null wenn leer duplicate
Hübscher Nerd

Wie in der folgenden Tabelle gezeigt wird, empty($foo) ist äquivalent zu $foo==null und is_null($foo) hat die gleiche Funktion wie $foo===null. Die Tabelle zeigt auch einige knifflige Werte bezüglich der null Vergleich. (ϕ bezeichnet eine nicht initialisierte Variable.)

         empty    is_null 
         ==null  ===null  isset   array_key_exists
      ϕ |   T   |   T   |   F   |   F   
   null |   T   |   T   |   F   |   T   
     "" |   T   |   F   |   T   |   T   
     [] |   T   |   F   |   T   |   T
      0 |   T   |   F   |   T   |   T      
  false |   T   |   F   |   T   |   T   
   true |   F   |   F   |   T   |   T   
      1 |   F   |   F   |   T   |   T   
     \0 |   F   |   F   |   T   |   T   

  • Fehlende „0“ und „0.0“ in der Tabelle. Sie machen die Dinge wirklich knifflig, besonders empty(). Deshalb vermeide ich die Verwendung von empty().

    – datasn.io

    24. Juni 2015 um 4:26 Uhr

  • @PHPst Basierend auf der Tabelle, die Sie gezeigt haben, was ist also eigentlich der PHP-Code dessen, was Sie “einfacher Vergleich” genannt haben?

    – Chetabahana

    9. Februar 2016 um 12:57 Uhr

  • @hyip ==nullund ===null.

    – Hübscher Nerd

    9. Februar 2016 um 13:00 Uhr

  • Dies sollte die Top-Antwort sein, viel vollständiger. Danke.

    – pgr

    30. März 2017 um 8:41 Uhr

  • @PHPst Sie sagten, dass ein einfacher Vergleich weniger zweideutig ist. Können Sie bitte ein Beispiel für die Verwendung eines einfachen Vergleichs anstelle dieser NULL leeren () usw. geben?

    – Naeem Ul Wahhab

    24. Januar 2018 um 19:15 Uhr

prüfen == vs ===

'' == NULL würde wahr zurückgeben
0 == NULL würde wahr zurückgeben
false == null würde wahr zurückgeben

wohingegen

'' === NULL würde false zurückgeben
0 === NULL würde false zurückgeben
false === NULL würde false zurückgeben

  • Getestet und richtig. ”==null (wahr) während ”===null(falsch)

    – TheLegendaryCopyCoder

    16. Juni 2018 um 13:52 Uhr

1647937449 133 php ist null wenn leer duplicate
Felix Klinge

Nein, es ist kein Fehler. Schauen Sie sich die an Lose Vergleiche mit == Tisch (zweite Tabelle), die das Ergebnis des Vergleichs jedes Werts in der ersten Spalte mit den Werten in den anderen Spalten zeigt:

    TRUE    FALSE   1       0       -1      "1"     "0"     "-1"    NULL    array() "php"   ""

    [...]    

""  FALSE   TRUE    FALSE   TRUE    FALSE   FALSE   FALSE   FALSE   TRUE    FALSE   FALSE   TRUE

Dort sehen Sie, dass es sich um eine leere Zeichenfolge handelt "" im Vergleich zu false, 0, NULL oder "" wird wahr ergeben.

Vielleicht möchten Sie verwenden is_null [docs] stattdessen oder strikter Vergleich (dritte Tabelle).

1647937450 888 php ist null wenn leer duplicate
Aurelio deRosa

Dies ist nicht ein Fehler, aber normales PHP-Verhalten. Es passiert, weil die == Operator in PHP überprüft nicht den Typ.

'' == null == 0 == false

Wenn Sie auch prüfen möchten, ob die Werte denselben Typ haben, verwenden Sie === stattdessen. Um diesen Unterschied eingehend zu studieren, lesen Sie bitte die amtliche Dokumentation.

1647937450 837 php ist null wenn leer duplicate
Dayuloli

Wenn du benutzt ==behandelt PHP einen leeren String oder ein leeres Array als null. Zur Unterscheidung zwischen null und emptyentweder verwenden === oder is_null. Damit:

if($a === NULL) oder if(is_null($a))

1647937450 918 php ist null wenn leer duplicate
Foued MOUSSI

PHP 7 isset() vs. empty() vs. is_null()

Geben Sie hier die Bildbeschreibung ein

1005450cookie-checkphp ist null wenn leer? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy