isset()如何工作?

时间:2018-01-22 21:15:25

标签: php isset

我对isset()函数有一些疑问。

isset()函数检查是否设置了变量,换句话说,它检查变量的值是否为NULL。

但如果我这样做会怎么样:

<?php 
  isset($var);
?>

当我对一个不存在/未声明/未定义的变量或任何你调用的变量使用isset()函数时会发生什么?

我在问,因为我正在写一些代码

<?php
function renderForm($firstName = '', $lastName = '' , $error = '', $id = ''){
?>
    <div id='recordsForm'>
        <h1><?php if($id != '' ){ echo "Edit Record"; } else { echo 'Create New Record'; } ?></h1>
        <?php if($error != ''){ echo $error; } ?>
        <form action='records.php' method='POST'>
            <?php 
                if($id != ''){
                    ?>
                        <input type='hidden' name='id' value='<?php echo $id; ?>'> 
                    <?php
                    echo "<h3>Record ID: {$id}</h3>";
                }
                echo "First Name: <input type='text' name='firstname' value='".$firstName."' />";
                echo "<br>";
                echo "Last Name: <input type='text' name='lastname' value='".$lastName."' /> ";
                echo "<br>";
                echo "<input type='submit' name='submit' value='submit' />";
            ?>
        </form>
    </div>

<?php
}
if(isset($_GET['id']) && is_numeric($_GET['id'])){
    // edit record
    renderForm(NULL,NULL,NULL,$_GET['id']);
} else {
    // add new record
    if(isset($_POST['submit'])){
        // Do some form processing stuff
    } else {
        renderform();
    }
}
?>
 ?>

你可以看到我写了isset($ _ POST ['submit']),即使$ _POST ['submit']不存在,因为我没有调用renderForm()函数。

这是否意味着isset()只检查变量是否为空,即使变量不存在,就像我的情况一样?

我希望我没有把你困惑:D

3 个答案:

答案 0 :(得分:2)

isset($var)检查当前作用域中变量已定义,其值不为null。一些例子:

<?php 
  isset($var); //false
?>

<?php 
  $var = null;
  isset($var); //false
?>

<?php 
  $var = "some string";
  isset($var); //true
?>


<?php 
  $var = "";
  isset($var); //true
?>


<?php 
  $var = false;
  isset($var); //true
?>

答案 1 :(得分:1)

对于设置且与isset()不同的任何变量,

NULL将返回true。

示例:

$a = null;
$b = '';
$c = 0;
$d = false;
$e = true;

var_dump(isset($a), isset($b), isset($c), isset($d), isset($e), isset($f));

应显示:

bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)

答案 2 :(得分:0)

在你的情况下,由于你没有定义$ var,isset($var)将返回false。

相关问题