我最近通过article发现了这个有趣的Deceze 但我对它的一个建议感到有点困惑:
永远不要对应存在的变量使用empty或isset
使用empty()
不是测试$foo = '';
是否为空的好选择吗?
答案 0 :(得分:5)
他的意思是如果你想检查字符串是否为空,那么空将不会这样做。空可以表示false,0,null。任何'虚假'。
E.g。这些都是真的:
<?php
$string = null;
if (empty($string)) {
echo "This is true";
}
$string = '';
if (empty($string)) {
echo "This is true";
}
$string = 0;
if (empty($string)) {
echo "This is true";
}
如果你想检查字符串是否为空字符串,你应该检查'':
<?php
$string = '';
if (isset($string) && $string === '') {
echo "This is true";
}
$string = null;
if (isset($string) && $string === '') {
echo "This is false";
}
答案 1 :(得分:4)
PHP empty()
可以在很多情况下使用。
它适用于检查:
如果字符串为blank
如果变量为undefined
或null
当然empty()
最适合你的情况。
答案 2 :(得分:3)
如果您希望empty
存在,则不应使用isset
(或$foo
)。这意味着,如果根据您的程序逻辑,此时应该存在$foo
:
if ($foo === '')
然后不执行以下任何操作:
if (isset($foo))
if (empty($foo))
这两种语言结构可以抑制未定义变量的错误报告。这是他们唯一的工作。这意味着,如果您无偿地使用isset
或empty
,PHP将不会告诉您代码中的问题。例如:
$foo = $bar;
if (empty($føø)) ...
嗯,为什么总是 true
,即使$bar
包含预期值?因为您错误输入了变量名称,并且您正在检查未定义变量的值。把它写成这样,让PHP帮助你:
if (!$føø) ...
注意:行上的未定义变量fø...
条件本身是相同的,== false
(!
)和empty
会为相同的值产生相同的结果。
如何检查空字符串取决于您执行或不接受的值。可能$foo === ''
或strlen($foo) == 0
是您正在寻找的支票,以确保您的字符串包含某些内容。
答案 3 :(得分:0)
尝试使用这个 php if 函数: $retVal = (条件) ?一:二;
其中条件:$value == null
a:是 $value 为空时显示的值
b:是要显示的实际值或当 $value 不为空时要显示的任何其他值
如需进一步指导,请发表评论