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