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 –
- 1. Zastrzyk bajtów php null?
- 2. Sprawdź, czy wartość array isset i jest null
- 3. Null/Przedmiot i Null/Null sprawność porównanie
- 4. php file_get_contents zwraca null gdy allow_url_fopen jest
- 5. Jak zresetować zmienną na NULL w PHP?
- 6. PHP/GD - Kadrowanie i zmiana rozmiaru obrazów
- 7. zastosować, sapply i lappy NULL
- 8. MySQL COUNT() i wartości null
- 9. Łączenie bezpieczeństwa null i assertNotNull
- 10. Handler.removeCallbacksAndMessages (null) i główny looper
- 11. SQL jest nieważna i = null
- 12. Jaka jest różnica między tymi (bCondition == NULL) i (NULL == bCondition)?
- 13. Dlaczego Double.parseDouble (null) i Integer.parseInt (null) wyrzucają różne wyjątki?
- 14. Dlaczego (null == false) i (null == true) oba zwracają fałsz?
- 15. co jest "$$" w PHP
- 16. PHP i ?? operator
- 17. Singlety PHP i dziedziczenie
- 18. PHP Encrypt i Windows Decrypt
- 19. #define NULL NULL
- 20. Zastępowanie pustego łańcucha wartościami null w tablicy php
- 21. Przypisywanie wartości NULL do zmiennej w PHP: co to oznacza?
- 22. php: napisać Isset funkcję, która zwraca wartość lub wartość null
- 23. PHP SoapClient zwraca null nawet, że tam był odpowiedzią
- 24. Tablice z kluczami NULL
- 25. Czy jest jakaś korzyść z używania wartości null w PHP?
- 26. Konwertuj null na ciąg
- 27. MySQL LOAD_FILE zwraca NULL
- 28. Nieoczekiwany T_PAAMAYIM_NEKUDOTAYIM w PHP 5.2.x
- 29. Wstawianie bazy danych Wordpress() i aktualizacja() - używanie wartości NULL
- 30. Formularz logowania z jQuery AJAX i PHP
To nie jest duplikat - inne pytanie dotyczy "===", a nie "==" – derekdreery