php中的isset()和empty()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中的isset()和empty()相关的知识,希望对你有一定的参考价值。

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()的主要内容,如果未能解决你的问题,请参考以下文章

php isset和empty方法的区别

php empty();和isset();

PHP !isset 和 empty & session check 每次都变为真[重复]

php中的empty()方法

PHP中empty()和isset()的区别

isset 和empty 两个函数的用法