(isset($ someValue)&&($ someValue!=''))vs.!empty($ someValue) - 它们是否相同?

时间:2011-05-12 23:37:41

标签: php null

以下两个陈述是否相似?

if (isset($someValue) && $someValue != '') 

if(!empty($someValue]))

4 个答案:

答案 0 :(得分:3)

不,他们不一样。是的,他们是相似的。第一个检查'someValue'是否已设置且不等于null加上是否为空字符串。如果$_GET['act']未设置或位于documentation page上列为空的变量列表中,则第二个为真。

同一文档页面中的以下示例应填补空白:

$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 :(得分:2)

0值之外的其他类似内容。

根据http://us3.php.net/empty

$var = "0";
(!empty($var)) === false;
(isset($var) && $var!='') === true;

答案 2 :(得分:1)

当你写它时,它们实际上几乎相反,但我只是假设你的意思是isset($_GET[someValue])!empty

在那种情况下不,他们不一样。在第一行中,您正在检查空字符串,但是例如将传递零值。但是,零值计为空。

答案 3 :(得分:1)

相似但不一样。如果$_GET['act']等于以下任何一项,则Empty将返回true:

  • “”(空字符串)
  • 0(0为整数)
  • 0.0(0作为浮动)
  • “0”(0作为字符串)
  • NULL
  • FALSE
  • array()(空数组)
  • var $ var; (声明的变量,但在类中没有值)

第一个只检查变量是否已创建且不等于空字符串。

相关问题