我为什么要使用isset?

时间:2016-01-12 19:32:18

标签: php

我是PHP的初学者,想知道这个

之间有什么区别
$variable = "text"; 
if($variable){
    echo $variable; 
}

和这个

$variable = "text"; 
if(isset($variable)){
    echo $variable; 
}

4 个答案:

答案 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。