Różnica między wartością NULL i null w PHP

85

Czy jest różnica między NULLi nullw PHP? Czasami wydają się być wymienne, a czasami nie.

edycja: z jakiegoś powodu, kiedy czytam dokumentację, do której link znajduje się w odpowiedzi (przed wysłaniem tego pytania), czytam ją jako „z uwzględnieniem wielkości liter” zamiast „bez rozróżniania wielkości liter”, co było głównym powodem, dla którego zamieściłem to pytanie w pierwszej kolejności .. .

cmcculloh
źródło
2
NULL=nulli vice versa, chyba że sprawdzane jest dokładne dopasowanie w DB.
Funk Forty Niner
@FunkFortyNiner nie ma bazy danych zaangażowanej w to pytanie. Pytanie dotyczy języka programowania.
Pablo Pazos
@PabloPazos dlaczego dzwonisz do mnie po upływie 6 lat? Dodatkowo, jeśli ponownie przeczytasz mój komentarz, zobaczysz prawdopodobne znaczenie. Spójrz na słowo kluczowe „chyba”, które byłoby możliwą prawdą.
Funk Forty Niner
1
@PabloPazos to trochę śmieszne nawet komentować jak twój, to, co powiedział, jest całkowicie istotne i pomocne. Gdyby ktoś inny przyszedł i spojrzał na to, mając błąd bazy danych, pomogłoby to w szybkim znalezieniu rozwiązania, a ci, którzy również nie są istotne, po prostu przejdą dalej i spojrzą na inną odpowiedź.
Kenziiee Flavius
1
@FunkFortyNiner Dzięki za komentarz, właśnie tego potrzebowałem. Próbowałem odfiltrować wartość bazy danych NULL za pomocą isset (), która zwykle zwraca false dla zwykłych wartości null, ale z wartością bazy danych musiałem użyć $ value === NULL. Nie bardzo rozumiem, jak to jest możliwe, ale dotarłem do tej strony z tym problemem.
Jeff

Odpowiedzi:

124

Null nie rozróżnia wielkości liter.

Z dokumentacji :

Jest tylko jedna wartość typu null, a jest nią słowo kluczowe NULL bez rozróżniania wielkości liter .

mbillard
źródło
6
Chyba że zapytano o dokładne dopasowanie w DB.
Funk Forty Niner
Mam problem z porównaniem nullwartości uzyskanej z zapytania bazy danych. Możesz pomóc?
Razin Abid
9

Nie ma różnicy. Ten sam typ jest tylko słowem kluczowym bez rozróżniania wielkości liter . To samo co True/ Falseetc ...

SolidSnake
źródło
-2

cóż, istnieje różnica techniczna, po prostu nie to, o czym myślisz (pomyśl: gdzie pojawia się w słowniku): wartość ASCII dla małych liter null pojawia się po dużej. Próbować:

$a = NULL;
$b = null;
if($a < $b){
   print 'first num appears earlier in the dictionary than second num';
}
else {
   print'the right num appears in the dictionary before the left num ';
}

** w rzeczywistości nie ma wartości ASCII dla małych liter null, podczas gdy duże litery NULL to 0. Małe litery null zostaną ocenione jako wartość ciągu, która byłaby większa niż 0. Różnica między wszystkimi dużymi i małymi wartościami ASCII wynosi 32, z wyjątkiem tego gdzie brana jest pod uwagę cała wartość ciągu.

David Hahn
źródło
err, jak to się ma do użycia jako flagi logicznej? ASCII nigdy nie jest odpytywane?
Martin
1
To jest źle. Powinieneś powiedzieć elseif($b < $a) {... } else print 'the same';a wtedy zobaczysz, że w rzeczywistości są takie same. Podobnie jak nUlL i NuLl.
Matt