PHP:使用empty()作为空字符串?

时间:2016-11-24 11:14:24

标签: php

我最近通过article发现了这个有趣的Deceze 但我对它的一个建议感到有点困惑:

  

永远不要对应存在的变量使用empty或isset

使用empty()不是测试$foo = '';是否为空的好选择吗?

4 个答案:

答案 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

  • 如果变量为undefinednull

当然empty()最适合你的情况。

答案 2 :(得分:3)

如果您希望empty存在,则不应使用isset(或$foo)。这意味着,如果根据您的程序逻辑,此时应该存在$foo

if ($foo === '')

然后执行以下任何操作:

if (isset($foo))
if (empty($foo))

这两种语言结构可以抑制未定义变量的错误报告。这是他们唯一的工作。这意味着,如果您无偿地使用issetempty,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 不为空时要显示的任何其他值

如需进一步指导,请发表评论