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