W PHP, jaka jest różnica między is_null
i ==null
w PHP? Jakie są kwalifikacje, aby obie wersje zwracały wartość true?PHP is_null() i == null
Odpowiedz
is_null
jest taka sama jak === null
. Oba zwracają wartość true, gdy zmienna ma wartość null
(lub unset).
Pamiętaj, że używam ===
, a nie ==
. ===
porównuje typ i wartość.
Jeśli zmienna nie jest ustawiona, 'is_null()' zwraca ' true' ale również zgłasza błąd "notice: undefined variable". Aby tego uniknąć, możesz zrobić '! Isset ($ var)', co jest równoważne, jedyną wadą jest to, że możesz przekazać tylko zmienne do 'isset()'. –
@Rocket, Kiedy mówisz "jest taki sam", masz na myśli ** identyczne ** również pod względem błędów i ostrzeżeń, które będą generować? – Pacerier
@Pacerier: Tak! Zobacz ten przykład: https://eval.in/297496 –
Istnieje kilka, które pokazują, jak różne wartości reagują naprawdę dobre wykresy na stronie php.net:
+1 dla linku :-) –
==
nie sprawdza typu, więc jakoś, gdzieś, coś jak ciąg ''
lub ciąg 'null'
może pojawić się jako równy zeru.
Użyj potrójnego znaku równości, ===
, aby nie tylko sprawdzić dwie wartości są równe, ale także, że są tego samego typu.
Więc można lepiej zrozumieć:
$a = null;
$b = 0;
is_null($a) // TRUE
$a == null // TRUE
$a === null // TRUE
is_null($b) // FALSE
$b == null // TRUE
$b === null // FALSE
Świetny przykład! +1 –
Można sprawdzić porównanie między is_null() i zerowy === $ var
FYI, dla jasności, jest to wykres porównujący WYDAJNOŚĆ; Podążyłem za linkiem, żeby zobaczyć, czy jest jakaś subtelna sytuacja, w której są SEMANTYCZNIE różne, ale nie o to chodzi. – ToolmakerSteve
===null
zaleca autor: Rasmus Lerdorf, wynalazca PHP. Rasmus twierdzi, że test zerowy jest szybszy niż test isset
. Jego zalecenie jest wystarczającym powodem, aby poważnie spojrzeć na różnicę. Różnica byłaby znacząca, gdybyś miał małą pętlę przechodzącą przez ten sam kod tysiące razy w jednym żądaniu strony internetowej.
Kiedy mówisz, że ktoś mówi coś, link lub [potrzebne źródło] (http://xkcd.com/285). – Pacerier
FWIW, to nie jest to, o co pyta OP. 'isset' ma inne znaczenie. – ToolmakerSteve
@ Tematowy szablon o zwróconej wartości został bardzo dobrze opisany w najlepszej odpowiedzi (znaczniku). To jest dodatek do różnic w prędkości –
To nie jest duplikat - inne pytanie dotyczy "===", a nie "==" – derekdreery