В PHP, какие различия между NULL и установкой строки равны двум одинарным кавычкам
Я использовал такие вещи, когда мне нужны пустые значения.
$blankVar = '';
Затем через несколько месяцев я решил, что это выглядит лучше и имеет более четкие намерения.
$blankVar = null;
Это работало без икоты на некоторое время, но недавно с подготовленными заявлениями PDO у меня возникла проблема. Привязывание значения к нулю заставило запрос сбой, а привязка его к "нет". Мне нужно было привязать его к нулевому значению, чтобы в случае выполнения условия оно вставляло пустые данные.
В чем разница между 2? Я все еще думаю, что равным нулю (или хотя бы константа) выглядит лучше, так что я должен это делать?
define('EMPTY', '');
Ответы
Ответ 1
Null - это еще один тип данных в PHP, который имеет только одно значение (null). Поскольку PHP - это плохо типизированный язык, он может запутать, как он обрабатывает разные значения.
"", 0, "0", False, array(), Null
все считаются False в PHP.
Нуль, однако, является другим видом животного. основная несовместимость с использованием Null заключается в том, что вы не можете определить, isecet().
$x = false;
isset($x) -> true
echo $x -> ""
$y = null;
isset($y) -> false
echo $y -> ""
//$z is not set
isset($z) -> false
echo $z -> E_NOTICE
Таким образом, null является нечетным в том смысле, что он не соответствует нормальным правилам правил в PHP (по крайней мере, некоторым). В большинстве случаев это нормально.
Когда дело доходит до столбцов базы данных, PHP NULL не имеет места. Вы видите, что SQL - это строковый язык. SQL NULL должен быть представлен NULL
без кавычек.
Итак, если вы хотите поле EMPTY, установите для него значение ""
INSERT INTO foo SET bar = ""
Но если вы хотите поле NULL, установите для него значение NULL
INSERT INTO foo SET bar = NULL
БОЛЬШАЯ РАЗЛИЧИЯ.
Но если вы попытаетесь напрямую вставить PHP NULL, он добавит в запрос нулевые символы (что оставляет вас с пустой или синтаксической ошибкой, в зависимости от того, цитируете ли вы ее).
Ответ 2
null является специальным значением-заполнителем на языке программирования, который буквально означает "ничего". Это не 0, это не пустая строка, это ничего. В памяти не указана ценность. С другой стороны, пустая строка по-прежнему представляет собой строковый объект, очень короткий:)
Ответ 3
Ну, это одна вещь, как хорошо выглядит каждый подход, но основное отличие состоит в том, что одна является пустой строкой, а другая - неинициализированной переменной (null)
Ответ 4
Помимо различий, заявленных Rex, существует два типа сравнений в PHP: свободный и строгий:
http://www.php.net/manual/en/types.comparisons.php
Если в любой емкости используются строгие сравнения или функции типа is_null(), вы получите разные результаты. Тем не менее, при неплохих сравнениях PHP очень мягкий.
Я не знаю точно, но вы можете использовать свой нулевой подход, а затем просто тип, когда используете переменную в контексте, где у вас были проблемы (например, pass (string) $blankVar). Если это работает, это может означать, что для вашего кода требуется меньше изменений.
Ответ 5
'null' - единственная вещь, к которой относятся неинициализированные переменные. Вы можете установить для переменной значение null. Существует также "неустановленное" состояние, означающее, что переменная вообще не существует. Вы можете проверить это с помощью функции isset(). Чаще всего используется для проверки того, существует ли элемент массива и, например, способ узнать, получил ли $_GET ['op'] параметр querystring. Вы также можете сделать переменную unset (удалить элемент массива) с помощью функции unset(). Существует также функция empty(), которая проверяет, является ли переменная NULL, FALSE, 0 или пустой строкой