Php 为什么一个人要用isset呢$可变名称

Php 为什么一个人要用isset呢$可变名称,php,isset,Php,Isset,我想知道为什么有人想在上使用函数isset表示变量未设置或不存在 例如: <?php if(!$name){ echo 'Name is not set'; } if(isset($name) == false){ echo 'Returned false'; } ?> <?php $a = array ('test' => 1, 'hello' => NULL, 'pie' => array

我想知道为什么有人想在
上使用函数
isset
表示变量未设置或不存在

例如:

<?php
    if(!$name){
        echo 'Name is not set';
    }
    if(isset($name) == false){
        echo 'Returned false';
    }
?>
<?php

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try: 
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE

 if(!$a['hello']){   //this will display a warning: Undefined variable.
    echo 'hello is not set in the array';
}
?>


他们两个不是都会被呼应出来吗?有人告诉我,使用
isset
更好,但我不明白为什么。有人能解释一下吗?

如果我们直接使用$variableName,并且在检查之前没有定义$variableName,那么php将生成一个未定义变量的警告。如果我们使用isset,那么如果之前定义了变量,那么将其设置为isset将返回true,如果未定义,则isset将返回false,因此不会生成未定义变量或索引警告

如果以前没有定义isset,那么将isset与变量一起使用是一种很好的做法

<?php
    if(!$name){   //this will generate a warning
        echo 'Name is not set';
    }
    if(isset($name) == false){   //this will not as isset returns false
        echo 'Returned false';
    }
?>

函数确定变量是否已设置且不为空

如果已使用
unset()
取消设置变量,则将不再设置该变量<如果测试设置为NULL的变量,则code>isset()将返回FALSE。还要注意,空字节
(“\0”)
并不等同于PHP空常量

如果提供了多个参数,则只有在设置了所有参数后,
isset()
才会返回TRUE。计算从左到右进行,并在遇到未设置的变量时立即停止

如果未使用
isset()
脚本将生成一条警告,使用
isset()
可以防止出现这种情况

例如,使用
isset()
的一个原因是检测键是否在数组中

例如:

<?php
    if(!$name){
        echo 'Name is not set';
    }
    if(isset($name) == false){
        echo 'Returned false';
    }
?>
<?php

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try: 
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE

 if(!$a['hello']){   //this will display a warning: Undefined variable.
    echo 'hello is not set in the array';
}
?>

如果某个变量不存在,而您正试图访问它,这将生成警告:

if ($foo) ... // E_NOTICE: Undefined variable foo
这个不存在的变量的值是
null
,因此结果是相同的,这意味着
if
条件将不满足,代码将不会执行,但您会收到此警告,通知您潜在的问题(它确实存在)

使用
isset
测试变量是否存在而不会触发错误。您应该只对确实无法确定的变量使用此选项。如果应该在代码中的某个点设置变量,则不需要设置
isset
;如果变量不存在,则需要发出警告通知。

未定义值 如果未定义
$name
,则第一个
If
将输出警告并返回
false
。 (
E_通知

第二个
if
将正常工作并返回
false

布尔值 如果
$name
true
则只有第二个
If
将输出
回音

if(!$name){
    echo 'Name is not set';
}

if(isset($name) == false){
    echo 'Returned false';
}
因此,
isset
与您希望从该条件中检索的内容更加一致。您只想查看
$name
是否定义了值

整数值 如果
$name
0
,则第一个
if
将输出未设置的名称,但第二个if将返回
true
,因为变量
$name
已设置。因此更具一致性

结论
isset
更好,因为它能准确地执行您想要检索的内容和您想要的内容。

因为否则错误报告是无用的→ 重复的,您想使用
(!$variableName)
,但仍然使用
(isset($name)==false)
:D
(!isset($name))
将节省您的时间,因为它只返回布尔值。我没有问任何错误,我只是问为什么一个比另一个好。所以不是复制品。谢谢你,贾里,我知道你能做到,但写这篇文章时有点不知所措。原因是错误。是的,问题的措辞不同,但核心问题是错误。操作员
在PHP中用作
NOT
函数,不用于检查是否设置了变量!你的答案是“会发生什么”,如果他这样使用,你没有解释为什么会发生。是的!是逻辑NOT运算符,它将TRUE转换为FALSE。这里1是真的,2也是真的,“你是个天才”也是真的。无论使用何种数据,如果在使用之前未定义为null!,它会很好用的。但是如果没有定义变量或数据,它仍然可以工作,但是php也会生成一个警告。