1

什么时候应该使用:

if( //following code

  1. !isset($foo)

  2. !($foo)

  3. $foo == "" )

4

7 回答 7

11

如果您不使用 isset 并且您正在测试的变量未定义,则会生成警告。此外,从未设置过的内容与设置为空字符串、false、null 或 0 之间存在差异。考虑您正在检查数组键,而您只想知道它是否已创建 -并且不关心值 - 如果 (!$a['key']) 将返回 false 如果键为 0、null 或空。

如果您知道将定义变量并且测试只需要知道该变量是否为非假(即 0、''、null 或假),那么您可以绕过 isset。

于 2011-05-04T20:23:40.003 回答
1
  1. 当您想检查是否$foo存在,但不关心它的价值时。
  2. 当您知道$foo存在并希望确保它评估为false.
  3. 永远不要,您应该使用trimemptystrlen
于 2011-05-04T20:44:43.413 回答
0

PHP类型对照表

于 2011-05-04T20:22:45.877 回答
0

isset 验证变量或数组索引是否已设置为 null 以外的值。

isset($var) === 假

$var=空;isset($var) === 假

$var= 1; isset($var) === 真

$var=''; isset($var) === 真

// 数组也是如此 $array= array(); isset($array) === true isset($array[0]) === false

于 2011-05-04T20:23:57.963 回答
0

在条件 if语句中,isset如果需要检查变量是否存在,应该先行。您还可以empty在某些情况下使用,例如当您要检查它是否未定义或松散地等于 null 时。

使用isset对于在严格模式下防止警告很有用。

于 2011-05-04T20:24:20.707 回答
0

除非您想专门检查是否设置了变量(它是否实际包含任何内容),否则 !empty() 总是比 isset 更好用。

于 2011-05-09T02:53:02.990 回答
-1

1 : 是否设置了 var $foo 的任何值

function test($param = NULL){
  if(isset($param)){
    ....
  }
}

2:检查布尔真/假(也检查空字符串)

3:检查空字符串。

if(trim($_POST['name']) == ""){
   // throw error
}

我知道的例子并不令人惊奇,但希望他们能传达信息。

于 2011-05-04T20:24:58.723 回答