isset()和empty()的功能很类似,只能说是很类似,因为他们还是有不同点的,而他们的不同点还是挺明显的;
官方手册中对这两个的解释分别如下:
bool empty ( mixed
$var
) 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE
,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。 bool isset ( mixed
$var
[, mixed $...
] ) 检测变量是否设置,并且不是 NULL
。 我经常在判断表单是否提交的时候用到这两个函数,但是有时候也是会搞混的。
比如我进行各种操作之前,得先判断一下是否有表单提交? 是否是用指定的方式(GET或者POST)来提交?提交的动作是什么(删除、显示、插入)? 这时我就得用到empty或者isset,说经常搞混,是因为,我最开始是这样用的,比如下面这段代码:
<form action="" method="post"> ???<input type="text" name="test" > ???<input type="submit" name="submit" value="delete"> ???<input type="submit" name="submit" value="update"> </form> ?<?php ???if(isset($_POST)){ ???????echo "收到请求"; ???} else{ ???????echo "未收到请求"; ???} ??>
其实这是错误的,因为$_POST是一个全局数组,就算$_POST数组为空,那$_POST也是存在的,无论是否有post请求,改代码都会输出“收到请求”。你可能会想到用isset判断submit的name属性是否为空,比如下面的代码:
<form action="" method="post"> ???<input type="text" name="test" > ???<input type="submit" name="submit" value="delete"> ???<input type="submit" name="submit" value="update"> </form> ?<?php ???if(isset($_POST[‘submit‘]) && $_POST[‘submit‘]==‘delete‘){ ???????echo "收到删除请求"; ???} elseif(isset($_POST[‘submit‘]) && $_POST[‘submit‘]==‘update‘){ ???????echo "收到更新请求"; ???} else ???????echo "未收到请求"; ??>
还可以用下面这种方法实现:
<meta charset=‘utf-8‘> <form action="" method="post"> <input type="text" name="test" > <input type="submit" name="submit" value="delete"> <input type="submit" name="submit" value="update"> </form> <?php ?if( ! empty($_POST)){ $action=$_POST[‘submit‘]; switch($action){ case "delete":echo "delete"; break; case "update":echo "update";break; default:echo "非法提交"; } } else { echo "未收到请求"; } ?>
php中的isset()和empty()
原文地址:http://www.cnblogs.com/-beyond/p/7820378.html