www.adminn.cn
站长正能量分享网!

PHP isset()函数与empty()函数区别

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

empty 判断一个变量是否为“空”,isset 判断一个变量是否已经设置,正是这种所谓的“顾名思义”,令我开始时走了些弯路,当一个变量值等于0时,empty()也会成立(true),因而会发生一些意外,原来,empty 和 isset 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别:empty还会检测变量是否为空、为零,当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置.

比如检测 $id 变量,当 id=0 时,用empty 和 isset 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty 认为没有配置,isset 能够取得 $id 的值,代码如下:

  1. $id=0; 
  2. emptyempty($id)?print "it's empty .":print "it's $id .";  
  3.   //结果:it's empty . 
  4. print "<br>"
  5. !isset($id)?print "it's empty .":print "it's $id ."
  6.   //结果:it's 0 . 

这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty 要小心,这个时候用 isset 取代它更明智一些.

当一个php页面的 url 尾部参数出现 id=0 时(比如:test.php?id=0),试比较,代码如下:

if(empty($id)) $id=1; – 若 id=0 ,id 也会为1

if(!isset($id)) $id=1; – 若 id=0 ,id 不会为1

可分开运行以下代码检测上述推断,代码如下:

  1. if(emptyempty($id)) $id=1; 
  2. print $id// 得到 1 
  3. if(!isset($id)) $id=1; 
  4. print $id//得到 0 

看个实例,代码如下:

  1. <?php  
  2. $var = 0;  
  3. // 结果为 true,因为 $var 为空  
  4. if (emptyempty($var)) {  
  5. echo '$var is either 0 or not set at all';  
  6. }  
  7. // 结果为 false,因为 $var 已设置  
  8. if (!isset($var)) {  
  9. echo '$var is not set at all';  
  10. }  
  11. ?> 

由于这是一个语言结构而非函数,因此它无法被变量函数调用,empty() 只检测变量,检测任何非变量的东西都将导致解析错误,换句话说,后边的语句将不会起作用:empty(addslashes($name)).

下面是经过脚本之家测试过的一段isset与empty函数详细例子的代码,看完这个基本上就差不多了,代码如下:

  1. <?php  
  2. error_reporting(e_all);  
  3. echo '<b>未定义$var</b><br>';  
  4. echo "isset测试:<br>";  
  5. if ( isset ( $var ))  
  6. {  
  7. echo '变量$var存在!<br>' ;  
  8. }  
  9. echo "empty测试:<br>";  
  10. if ( emptyempty ( $var )){  
  11. echo '变量$var的值为空<br>';  
  12. }  
  13. else  
  14. {  
  15. echo '变量$var的值不为空<br>';  
  16. }  
  17. echo "变量直接测试:<br>";  
  18. if ( $var ){  
  19. echo '变量$var存在!<br>';  
  20. }  
  21. else {  
  22. echo '变量$var不存在!<br>';  
  23. }  
  24. echo '———————————-<br>';  
  25. echo '<b>$var = ''</b><br>';  
  26. echo "isset测试:<br>";  
  27. $var = '';  
  28. if ( isset ( $var ))  
  29. {  
  30. echo '变量$var存在!<br>' ;  
  31. }  
  32. echo "empty测试:<br>";  
  33. if ( emptyempty ( $var )){  
  34. echo '变量$var的值为空<br>';  
  35. }  
  36. else  
  37. {  
  38. echo '变量$var的值不为空<br>';  
  39. }  
  40. echo "变量直接测试:<br>";  
  41. if ( $var ){  
  42. echo '变量$var存在!<br>';  
  43. }  
  44. else {  
  45. echo '变量$var不存在!<br>';  
  46. }  
  47. echo '———————————-<br>';  
  48. echo '<b>$var = 0</b><br>';  
  49. echo 'isset测试:<br>';  
  50. $var = 0 ;  
  51. if ( isset ( $var ))  
  52. {  
  53. echo '变量$var存在!<br>' ;  
  54. }  
  55. echo "empty测试:<br>";  
  56. if ( emptyempty ( $var )){  
  57. echo '变量$var的值为空<br>';  
  58. }  
  59. else  
  60. {  
  61. echo '变量$var的值不为空<br>';  
  62. }  
  63. echo "变量直接测试:<br>";  
  64. if ( $var ){  
  65. echo '变量$var存在!<br>';  
  66. }  
  67. else {  
  68. echo '变量$var不存在!<br>';  
  69. }  
  70. echo '———————————-<br>';  
  71. echo '<b>$var = null</b><br>';  
  72. echo 'isset测试:<br>';  
  73. $var = null ;  
  74. if ( isset ( $var ))  
  75. {  
  76. echo '变量$var存在!<br>' ;  
  77. }  
  78. echo "empty测试:<br>";  
  79. if ( emptyempty ( $var )){  
  80. echo '变量$var的值为空<br>';  
  81. }  
  82. else  
  83. {  
  84. echo '变量$var的值不为空<br>';  
  85. }  
  86. echo "变量直接测试:<br>";  
  87. if ( $var ){  
  88. echo '变量$var存在!<br>';  
  89. }  
  90. else {  
  91. echo '变量$var不存在!<br>';  
  92. }  
  93. echo '———————————-<br>'
  94. echo '<b>$var ="php"</b><br>';  
  95. echo 'isset测试:<br>';  
  96. $var = "php";  
  97. if ( isset ( $var ))  
  98. {  
  99. echo '变量$var存在!<br>' ;  
  100. echo "empty测试:<br>";  
  101. if ( emptyempty ( $var )){  
  102. echo '变量$var的值为空<br>';  
  103. }  
  104. else  
  105. {  
  106. echo '变量$var的值不为空<br>';  
  107. }  
  108. echo "变量直接测试:<br>";  
  109. if ( $var ){  
  110. echo '变量$var存在!<br>';  
  111. //开源软件:phpfensi.com 
  112. else {  
  113. echo '变量$var不存在!<br>';  
  114. }  
  115. ?>

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHP isset()函数与empty()函数区别》
文章链接:https://www.adminn.cn/news/6551.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏