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也会生成一个警告。