我是PHP的初学者,想知道这个
之间有什么区别$variable = "text";
if($variable){
echo $variable;
}
和这个
$variable = "text";
if(isset($variable)){
echo $variable;
}
答案 0 :(得分:1)
isset
用于检查您收到的输入是否包含您所期望的内容 - 这是一个非常非常宽松的定义,我写道,当您使用它时,试图轻松解释。
当您自己设置变量时,使用isset
没有意义,您知道它的设置并且它包含一些值。
然而,许多语言,而不仅仅是PHP,处理用户输入。在这种情况下,用户可以是人,另一种计算机服务等。您通常将该输入存储在变量中。一个很好的例子是PHP的$_POST
,$_GET
,$_SERVER
,$_SESSION
。
当您收到用户通过HTML表单创建的输入时,您想要检查是否已填充某些值 - 在这种情况下,您使用isset
。
示例HTML表单:
<form method="POST" action="your_file.php">
<input type="text" name="first_name" />
<input type="text" name="last_name" />
<button type="submit">Send</button>
</form>
有人可以提交该表格,他们可以填写两个输入。或者只有其中一个,甚至没有。你不知道他们做了什么,但无论如何 - PHP将为你提供一个可能包含正确输入的变量。
如果我提交的表单中填写了无,并且您尝试访问first_name
的值 - 您会收到PHP警告 - 而且您不想要PHP警告。
因此,在使用用户输入(在这种情况下使用$_POST
超全局数组)之前,您将检查我是否正确填写了所有内容,并且您是这样做的:
if(isset($_POST['first_name']) && isset($_POST['last_name']))
{
echo "Form was filled in correctly";
}
else
{
echo "Form wasn't filled in correctly! Please fill in both fields";
}
希望能稍微清理一下。再一次,我使用了非常简单但真实的例子。
答案 1 :(得分:1)
isset()
,empty()
等函数最重要的功能是,在未设置变量时不会抛出错误,例如< em> Marc B 已经提到过。
PS:我强烈建议您在开发过程中打开strict mode和所有错误报告。
答案 2 :(得分:0)
有时您想知道是否设置了变量,例如出于安全考虑,出于调试原因。
函数isset()用于确定是否设置了一个变量并且不是NULL ,因此返回true或false。
如果设置了$ variable但是设置了$ variable或者设置了$ variable但是当前值为false(= counterexample)
,则表达式if($ variable){}将评估为false假设:
isset($ variable): 如果设置了变量并且不为null,则评估为true
if($ variable):根据变量的值或表达式的结果/值评估为true
答案 3 :(得分:0)
也许你的例子有点偏斜。然而。如果你忽略每个代码段的第一行,也许你会看到不同的。考虑代码段
if($variable){
echo $variable;
}
如果$ variable尚未初始化并分配了值,则is语句将导致错误。
另一方面,如果您初始化变量
$variable = "text";
if($variable){
echo $variable;
}
将测试变量是否为真或非零。
isset()函数将忽略该值,并告诉您该变量是否已初始化。
在以下代码段中,if()语句将返回true。
$variable = "text";
if(isset($variable)){
echo $variable;
}
while,在此代码中
<?php
if(isset($variable)){
echo $variable;
}
if()语句将返回false。