Я использовал такие вещи, когда мне нужны пустые значения.
$blankVar = '';
Затем, через несколько месяцев, я решил, что это выглядит лучше и имеет более четкие намерения.
$blankVar = null;
Это работало без икоты на некоторое время, но недавно с подготовленными PDO заявлениями я столкнулся с проблемой. Привязывание значения к нулю заставило запрос сбой, а привязка его к «нет». Мне нужно было привязать его к нулевому значению, так что, если бы условие было выполнено, оно вставило бы пустые данные.
Каковы различия между 2? Я все еще думаю, что равным нулю (или хотя бы константа) выглядит лучше, так что я должен делать это?
define('EMPTY', '');
Null – это еще один тип данных в PHP, который имеет только одно значение (null). Поскольку PHP – это плохо типизированный язык, это может сбивать с толку, как он обрабатывает разные значения.
"", 0, "0", False, array(), Null
– все считаются False в PHP.
Нуль, однако, является другим видом животных. Основная несовместимость с использованием Null заключается в том, что вы не можете определить, isexet ().
$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 (по крайней мере, некоторым). В большинстве случаев это нормально.
Когда дело доходит до столбцов базы данных, NULL PHP не имеет места там. Вы видите, SQL – это строковый язык. NULL SQL должен быть представлен NULL
без кавычек.
Поэтому, если вы хотите поле EMPTY, установите для него значение ""
INSERT INTO foo SET bar = ""
Но если вы хотите поле NULL, установите его в NULL
INSERT INTO foo SET bar = NULL
БОЛЬШАЯ РАЗНИЦА.
Но если вы попытаетесь напрямую вставить PHP NULL, он добавит к запросу нулевые символы (что оставляет вас с пустой или синтаксической ошибкой, в зависимости от того, цитируете ли вы ее).
null – это специальное значение-заполнитель на языке программирования, которое буквально означает «ничего». Это не 0, это не пустая строка, это ничего. В памяти не указана ценность. С другой стороны, пустая строка по-прежнему представляет собой строковый объект, очень короткий:
Ну, это одно, как хорошо выглядит каждый подход, но главное отличие состоит в том, что он является пустой строкой, а другой – неинициализированной переменной (null)
Помимо различий, заявленных Rex, существует два типа сравнений в PHP: свободный и строгий:
http://www.php.net/manual/en/types.comparisons.php
Если в любой емкости используются строгие сравнения или функции типа is_null (), вы получите разные результаты. Тем не менее, при наличии лишних сравнений PHP довольно мягкий.
Я не знаю точно, но вы можете использовать свой нулевой подход, а затем просто typecast, когда используете переменную в контексте, где у вас были проблемы (например, pass (string) $ blankVar). Если это работает, это может означать, что для вашего кода требуется меньше изменений.
«null» – это уникальная вещь, к которой относятся неинициализированные переменные. Вы можете установить для переменной значение null. Существует также «неустановленное» состояние, означающее, что переменная вообще не существует. Вы можете проверить это с помощью функции isset () . Чаще всего используется для проверки того, существует ли элемент массива и, например, способ узнать, получил ли $ _GET ['op'] параметр querystring. Вы также можете сделать переменную unset (удалить элемент массива) с помощью функции unset () . Существует также функция empty (), которая будет проверять, является ли переменная NULL, FALSE, 0 или пустой строкой