首页 > 后端开发 > 正文

为什么PHP传递参数值为0时,empty判断参数为真

2024-09-15 16:17:34 | 我爱编程网

小编今天整理了一些为什么PHP传递参数值为0时,empty判断参数为真相关内容,希望能够帮到大家。

本文目录一览:

为什么PHP传递参数值为0时,empty判断参数为真

PHP中empty和isset的区别

PHP 中 empty 和 isset 函数都用于检测给定参数目标情况,其区别如下:

一、函数功能设计所实现的目标不一样:

empty 主要用于:检测给定参数目标是否是“空值”。

isset 主要用于:检测给定参数目标是否设置。

empty 函数检测一个变量是否为以下空值:

isset 函数虽然也会检测给定变量是否为 NULL 的情况,但更主要的目的用于检测给定目标参数是否设置。

从以下实际代码实例中,可能更明显看出两者的区别:

<?php

function MyTest($test)
{
  // 判断 $var 变量是否为空
  if (empty($test)) 
      echo '$var 变量是空值。<BR>';  
  else 
      echo '$var 变量不是空值。<BR>';
  // 判断 $var 变量是否设置
  if (isset($test)) 
      echo '$var 变量已经设置(即使$var=0)。<BR>';
  else
      echo '$var 变量没有设置。<BR>';
}

  $var = NULL;
  echo '判断目标参数:$var = NULL:<BR>';
  MyTest($var);
  echo '<BR>';
  
  $var1 = 1;
  echo '判断目标参数:$var1 = 1:<BR>';
  MyTest($var1);
  echo '<BR>';
  
  $var2 = 0;
  echo '判断目标参数:$var2 = 0:<BR>';  
  MyTest($var2);
  echo '<BR>';

?>

上面代码的实际运行结果:

二、参数数量不同:

empty 只能检查一个变量,而 isset 可以检查多个变量。

为什么PHP传递参数值为0时,empty判断参数为真

为什么PHP传递参数值为0时,empty判断参数为真

empty()函数是用来测试变量是否已经配置。若变量已存在、非空 字符串 或者非零,则返回 false 值;反之返回 true值。所以,当字符串的值为0时,也返回true,就是执行empty内部的语句。这就是陷阱。

如: 假设 $value = 0; 则empty($value)=false。

判断字符串是否为空,可以这么判断: if ($value=="") ...

扩展资料:

以下的变量会被认为是空的:

"" (空字符串)

0 (作为整数的0)

0.0 (作为 浮点数 的0)

"0" (作为字符串的0)

NULL

FALSE

array() (一个空数组)

$var; (一个声明了,但是没有值的变量)

为什么PHP传递参数值为0时,empty判断参数为真

php中isset()&&!empty()与empty()有什么区别?

我爱编程网(https://www.52biancheng.com)小编还为大家带来php中isset()&&!empty()与empty()有什么区别?的相关内容。

empty()关注的是变量是否为空,其判断前提强调变量内容在判断之前最好没有值。在这一假设下,empty的内涵易于理解。变量不存在,当然没有值;变量存在但未初始化,或为NULL,满足没有值的要求;变量存在,不为NULL,值为零、空字符串、布尔false等,同样满足没有值的要求,表示变量从归零开始。empty涉及变量是否存在、是否未初始化或含有表示起点的值,这三个维度层次分明。

而isset关注的是变量是否已设置一个有意义的值,特别是维度3。判断旨在后续操作时,确认变量中是否有一个有意义的值。变量不存在或存在为NULL时,无意义,返回FALSE;变量存在,不为NULL,即使值为起点值如0或空字符串,表示工作可以开展,返回TRUE。因此,!empty强调变量内容为非起点值,而isset强调内容为起点值且有意义。

简而言之,isset() && !empty()的内涵实质由!empty()决定,但建议在!empty之前使用isset,以先排除变量不存在或未初始化的情况,再强调变量内容的非起点值。总结起来,不存在、NULL、起点值、非起点值对应empty的empty、empty、empty、!empty,以及!isset、!isset、isset、isset。

明确指出,empty关注变量是否开始运营,值非起点值时,才具备业务意义。因此,使用isset() && !empty()理解为业务条件具备--isset?如果具备,那么业务是否已开始运营了?--!empty()。至于为何没有单独检查原点值的函数,原因在于此检查与isset、empty、is_null分属不同层次,is_null从技术角度避免程序崩溃,empty、isset则从平台业务角度避免业务失效,而检查原点值涉及具体业务场景,分支情况太多,不会导致业务失效。 我爱编程网

以上就是我爱编程网小编为大家带来的内容了,想要了解更多相关信息,请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“为什么PHP传递参数值为0时,empty判断参数为真”相关推荐
php不为空函数 PHP 判断变量是否为空 empty() 函数
php不为空函数 PHP 判断变量是否为空 empty() 函数

php判断mysql数据库是否为空$sql="...这里是查询该字段的sql语句...";$query=mysql_query($sql);@$result=mysql_fetch_array($query);//判断开始这里默认该字段为nameif(!empty($result['name'])){echo"不为空";}else{echo"为空也就是你要输出a的

2025-02-20 16:49:35
smarty上判断PHP里传过来的数组为空否,可以用empty函数吗
smarty上判断PHP里传过来的数组为空否,可以用empty函数吗

smarty上判断PHP里传过来的数组为空否,可以用empty函数吗在smarty中数组是经常会用到的,循环遍历数组用section或者foreach,那么如何来判断一个数组是否为空呢,下面介绍两种方法:1,用count来取得数组的下标个数下面例子中,如果$array为空则不输出任何数据以下为引用的内容:{if$array|@countneq0}......{/

2024-08-10 21:29:12
请问在PHP里是如何把数组作为参数传递给函数??
请问在PHP里是如何把数组作为参数传递给函数??

谁能给我解释下PHP类中的这个构造函数,使用的是数组作为参数.第1个contruct构造函数,正如一般构造函数的基本功能一样:对类成员属性进行实始化。代码中,如果检测到传入的参数是个数组,就遍历数组,然后用$this-&gt;$key=$val;进行类成员属性的初始化。这里$key就是类成员属性的名称,而$val是应该赋予的初始值。请问在PHP里是如何把数组作为参

2024-08-03 17:26:33
php如何传递类参数
php如何传递类参数

php如何传递类参数PHP类中,可能有多个属性参数。当使用new创建一个对象的时候,可能需要完成初始化操作,需要从外边传递参数进来。下面演示具体过程:&lt;?phpclass Test { //定义私有变量name ,age private $name, $age; //构造函数,初始化的时候最先执行 public function __construct($name, $age

2024-07-19 13:51:24
如何判断PHP数组是否为空
如何判断PHP数组是否为空

如何判断PHP数组是否为空判断PHP数组是否为空,具体有五种方法:1:isset功能:判断变量是否被初始化说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_exists高4倍左右&lt;?php$a='';$a['c']='';if(!isset($a))ech

2024-12-12 00:34:36
php对没有赋值的变量不是应该输出为“NULL”吗。 为什么在if函数里面不能判断?
php对没有赋值的变量不是应该输出为“NULL”吗。 为什么在if函数里面不能判断?

php对没有赋值的变量不是应该输出为“NULL”吗。为什么在if函数里面不能判断?null应该是空的意思,空不能指定其变量类型,故if无法判断,此外你在if之前不是赋值了么!只不过赋值的方式不正确。你可以判断他的结果是true还是FALSE。而不是null,因为null用""就可以表示phpIF函数的用法phpIF函数的用法:if语句用于在指定条件为true时执行代码。语

2024-08-23 06:31:35
函数EMPTY(0)和ISNULL(0)的返回值分别是什么
函数EMPTY(0)和ISNULL(0)的返回值分别是什么

函数EMPTY(0)和ISNULL(0)的返回值分别是什么在PHP中变量是以C语言的结构体来存储的,其中这个结构体有个zend_uchartype;这样的成员变量,他是用来保存变量的类型的。于是"",false,NULL(null不区分大小写)在===判定的时候以变量类型进行区分。在下列情况下一个变量被认为是NULL:1.被赋值为NULL。2.尚未被赋值。3.被uns

2024-08-06 12:09:35
PHP设计一个判断某年是否是闰年的函数然后调用输出结果?(PHP 判断变量是否为空 empty() 函数)
PHP设计一个判断某年是否是闰年的函数然后调用输出结果?(PHP 判断变量是否为空 empty() 函数)

PHP设计一个判断某年是否是闰年的函数然后调用输出结果?&lt;?php$year=mt_rand(1900,2200);//从1900年到2200,可以自己改,也可以给一个定值。if($year%100==0){//判断世纪年if($year%400==0&amp;&amp;$year%3200!=0){echo"世纪年".$year."是闰年!";//世纪年里的闰年}

2024-07-26 10:51:22