isset() 是如何工作的?

How isset() works?

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

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

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

<?php 
  isset($var);
?>

当我对一个没有 exist/isnt declared/isnt 定义的变量或任何你称之为的变量使用 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

isset($var) 检查变量在当前范围内是否已 定义 并且其值不为空。一些例子:

<?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
?>

isset() 将 return 对于任何已设置且与 NULL 不同的变量为真。

示例:

$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)

在你的情况下,因为你没有定义 $var,isset($var) 将 return false。