你能帮助我改进我的编码风格吗?:)在我需要检查的一些任务中 - 变量为空或包含某些东西。为了解决这个任务,我通常会做以下几点。
检查 - 这个变量是否设置?如果设置 - 我检查 - 它是否为空?
<?php
$var = '23';
if (isset($var)&&!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
我有一个问题 - 我应该在empty()之前使用isset() - 是否有必要? TIA!
答案 0 :(得分:134)
这取决于你要找的东西,如果你只是想看看它是否为空,只需使用empty
,因为它会检查它是否也被设置,如果你想知道是否设置了某些东西使用isset
。
Empty
检查变量是否已设置,如果是,则将其检查为null,“”,0等
Isset
只是检查它是否设置,它可以是任何不为空的
使用empty
时,以下内容被视为空:
来自http://php.net/manual/en/function.empty.php
正如评论中所提到的,缺少警告对于empty()
也很重要empty()与(boolean)var相反,除了没有警告 未设置变量时生成。
关于isset
如果测试已设置为NULL的变量,isset()将返回FALSE
您的代码可以正常:
<?php
$var = '23';
if (!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
例如:
$var = "";
if(empty($var)) // true because "" is considered empty
{...}
if(isset($var)) //true because var is set
{...}
if(empty($otherVar)) //true because $otherVar is null
{...}
if(isset($otherVar)) //false because $otherVar is not set
{...}
答案 1 :(得分:11)
在您的特定情况下:if ($var)
。
如果您不知道变量是否存在,则需要使用isset
。因为你在第一行宣布它,你知道它存在,因此你不需要,不,不应该使用isset
。
同样适用于empty
,只有empty
还结合了对值的真实性的检查。 empty
相当于!isset($var) || !$var
,!empty
相当于isset($var) && $var
或isset($var) && $var == true
。
如果你只想测试一个应该存在的变量真实性,那么if ($var)
就足够了。
答案 2 :(得分:6)
你可以使用empty() - 如the documentation所示,如果变量没有值,它将返回false。
同一页面上的一个例子:
<?php
$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';
}
?>
如果您只想知道它是否为NULL,则可以使用isset。否则它似乎是空的()可以单独使用。
答案 3 :(得分:1)
如果未设置var,则返回Empty。但即使var不为空,isset也会返回true。
答案 4 :(得分:1)
以下是4种可能性的isset()
和empty()
的输出:未声明,null,false和true。
$a=null;
$b=false;
$c=true;
var_dump(array(isset($z1),isset($a),isset($b),isset($c)),true); //$z1 previously undeclared
var_dump(array(empty($z2),empty($a),empty($b),empty($c)),true); //$z2 previously undeclared
//array(4) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(true) [3]=> bool(true) }
//array(4) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(true) [3]=> bool(false) }
您会注意到所有'isset'结果与$b=false
的。评估为false的所有值(除非值为非值但为非值)将在isset
测试时返回true,在使用'empty'测试时返回false。
因此,当您担心变量的存在时,请使用isset()
。在测试true或false时使用empty
。如果实际的空虚类型很重要,请使用is_null
和===0
,===false
,===''
。
答案 5 :(得分:-3)
$var = 'abcdef';
if(isset($var))
{
if (strlen($var) > 0);
{
//do something, string length greater than zero
}
else
{
//do something else, string length 0 or less
}
}
这是一个简单的例子。希望它有所帮助。
编辑:在如上所述未定义变量的情况下添加isset
,它会导致错误,检查其首次设置是否有助于消除一些令人头痛的问题。