用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

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

时间:2015-01-23  来源:西部数据  作者:西部数据

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. ?>
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门