#php #null
#php #null
Вопрос:
Похожи ли два приведенных ниже утверждения?
if (isset($someValue) amp;amp; $someValue != '')
и
if(!empty($someValue]))
Ответ №1:
Нет, это не одно и то же. Да, они похожи. Первый проверяет, установлено ли ‘someValue’ и не равно ли null
плюс, не является ли это пустой строкой. Второе значение равно true, если $_GET['act']
оно не задано или находится в списке переменных, рассматриваемых как пустые и перечисленных на странице документации.
Следующий пример с той же страницы документации должен заполнить все пробелы:
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
Комментарии:
1. Не могли бы вы привести пример, чтобы доказать, что они не совпадают, т. Е. один
true
, а другойfalse
?2. Я только что сделал. Они каким-то образом противоположны: когда значение не задано или равно
null
,isset()
возвращаетfalse
,empty()
возвращаетtrue
. В случае других пустых значений (0
,0.0
«, ‘0
‘ и т.д.),isset()
возвращаетtrue
иempty()
также возвращаетtrue
.
Ответ №2:
Что-то похожее, за исключением 0
значения.
Согласно http://us3.php.net/empty
$var = "0";
(!empty($var)) === false;
(isset($var) amp;amp; $var!='') === true;
Комментарии:
1. Неверно: если
$var==="0"
, тоempty($var)===true
. Строка с нулем (‘0
‘) является одним из значений, которые считаются пустыми. Второй пример(isset($var) amp;amp; $var!='')===true
правильный (‘0
‘ задан, не равенnull
и отличается от пустой строки).2. Вы правы, я забыл восклицательный знак: (!empty($var)) === false;
3. Вид чего? Я не понимаю, что вы имеете в виду на самом деле.
4. Как и другие пытаются объяснить, это похоже. То есть в нескольких конкретных случаях это точно то же самое. Это зависит от того, что вы хотите протестировать. empty() рассматривает строку «0» как пустую строку…
Ответ №3:
Когда вы это пишете, они на самом деле почти противоположны, но я просто предположу, что вы имеете в виду isset($_GET[someValue])
и !empty
.
В таком случае нет, они не совпадают. В первой строке вы проверяете наличие пустой строки, но, например, будет передано нулевое значение. Однако нулевое значение считается пустым.
Комментарии:
1. amp; Феникс Большое спасибо! Я обновил свой вопрос, чтобы он был правильным.
Ответ №4:
Похоже, но не то же самое. Empty вернет значение true, если $_GET['act']
равно любому из следующих:
- «» (пустая строка)
- 0 (0 как целое число)
- 0.0 (0 как значение с плавающей точкой)
- «0» (0 в виде строки)
- NULL
- FALSE
- array() (пустой массив)
- var $var; (объявленная переменная, но без значения в классе)
Где в качестве первого только проверяется, была ли создана переменная и не равна ли она пустой строке.
Комментарии:
1. Не могли бы вы привести пример, чтобы доказать, что они не совпадают, т. Е. один
true
, а другойfalse
?2. Если бы у вас было введено число, и они ввели
0
, первое вернуло бы true (задано, а не равно пустой строке), тогда как empty() вернул бы false .