Sprawdzanie czy wartość to null czy false

> Dodaj do ulubionych

Do sprawdzania wartości null i logicznego fałszu służy operator ===.

Luźny system kontroli typów języka PHP zapewnia wiele sposobów sprawdzania wartości zmiennych, ale wiąże się z tym też wiele problemów. Operator == może fałszywie wskazywać, że dana wartość jest fałszywa lub null, jeśli jest ona pustym łańcuchem lub liczbą 0. Funkcja isset() sprawdza czy zmienna ma wartość różną od null, ale nie sprawdza logicznej wartości false.

Funkcja is_null() niezawodnie sprawdza czy dana wartość jest null, a funkcja is_bool() sprawdza czy mamy do czynienia z wartością logiczną (np. false), ale jest jeszcze lepsze rozwiązanie: operator ===. Operator ten sprawdza czy dane wartości są identyczne, co w świecie PHP nie jest równoznaczne z równe. Ponadto operator ten jest nieco szybszy od funkcji is_null() i is_bool(), a poza tym lepiej od nich wygląda.

Przykład

<?php
$x = 0;
$y = null;
 
// Czy $x jest null?
if($x == null)
    print('Ups! $x ma wartość 0, więc nie jest null!');
 
// Czy $y jest null?
if(is_null($y))
    print('Świetnie, ale da się to sprawdzić szybciej.');
 
if($y === null)
    print('Doskonale!');
 
// Czy łańcuch abc zawiera znak a?
if(strpos('abc', 'a'))
    // Mam cię!  strpos zwraca 0 oznaczające pozycję pierwszego znaku w łańcuchu.
    // Ale PHP interpretuje te 0 jako false, więc ta instrukcja drukowania nigdy nie zostanie wykonana!
    print('Znalazłem!');
 
// Rozwiązanie: użyj operatora !== (przeciwieństwo operatora ===) i za jego pomocą sprawdź, czy strpos() zwraca 0, czy logiczną wartość false.
if(strpos('abc', 'a') !== false)
    print('Teraz naprawdę to znalazłem!');
?>

Pułapki

  • Gdy sprawdzasz wartość zwrotną funkcji, która może zwrócić zarówno 0 jak i logiczną wartość false, np. strpos(), zawsze używaj operatorów === i !== albo będziesz mieć kłopoty.

Autor: Alex Cabal

Źródło: http://phpbestpractices.org/

Tłumaczenie: Łukasz Piwko

Treść tej strony jest dostępna na zasadach licencji CC BY-SA 3.0