Різниця між NULL та null у PHP


85

Чи є різниця між NULLі nullв PHP? Іноді вони здаються взаємозамінними, а іноді ні.

редагувати: чомусь, коли я прочитав документацію, на яку посилається у відповіді (перед публікацією цього питання), я прочитав її як "чутливий до регістру", а не як "нечутливий до регістру", що було основною причиною того, що я розмістив це питання в першу чергу. .


2
NULL=nullі навпаки, якщо не запитується точна відповідність у БД.
Funk Forty Niner

@FunkFortyNiner з цього питання не бере участі БД. Питання про мову програмування.
Пабло Пазос,

@PabloPazos, чому ти мене пингуєш через 6 років? Плюс, якщо ви ще раз прочитаєте мій коментар, ви побачите ймовірну актуальність. Подивіться на ключове слово "хіба що", що було б можливою істиною.
Funk Forty Niner

1
@PabloPazos трохи смішно навіть робити коментар, подібний до вашого, те, що він сказав, є цілком доречним та корисним. Якщо хтось інший зійшов і подивився на це, маючи помилку БД, це допомогло б швидко відшукати рішення, ті, хто його також не стосується, просто підуть далі і подивляться на іншу відповідь.
Kenziiee Flavius

1
@FunkFortyNiner Дякую за ваш коментар, саме це мені потрібно було почути. Я намагався відфільтрувати значення бази даних NULL, використовуючи isset (), який зазвичай повертає false для звичайних нулів, але зі значенням бази даних мені довелося використовувати $ value === NULL. Я не зовсім розумію, як це можливо, але я потрапив на цю сторінку з цією проблемою.
Джефф

Відповіді:


124

Нуль не враховує регістр.

З документації :

Існує лише одне значення типу null, і це нечутливе до ключового слова ключове слово NULL.


6
Якщо не запитано точну відповідність у БД.
Funk Forty Niner

У мене виникла проблема порівняння nullзначень, отриманих із запиту до бази даних. Ви можете допомогти?
Разін Абід

9

Різниці немає. Той самий тип - це ключове слово, що не враховує регістр . Те саме, що і True/ Falseі т.д. ...


-2

ну, є технічна різниця, тільки не те, про що ви думаєте (подумайте: де це з’являється у словнику): значення ASCII для малого нуля з’являється після верхнього регістру. Спробуйте:

$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 ';
}

** насправді немає значення ASCII для нуля нижнього регістру, тоді як велике значення NULL дорівнює 0. нижнє регістр буде обчислюватися як значення рядка, яке було б більше 0. Різниця між усіма великими та малими значеннями ASCII становить 32, крім де розглядається ціле значення рядка.


помилка, як це співвідноситься із використанням як буленескічний прапор? ASCII ніколи не запитується?
Мартін

1
Це неправильно. Ви повинні сказати elseif($b < $a) {... } else print 'the same';і тоді ви побачите, що насправді вони однакові. Як і nUlL і NuLl.
Метт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.