为了账号安全,请及时绑定邮箱和手机立即绑定

我应该在哪里使用isset()和!empty()

我应该在哪里使用isset()和!empty()

PHP
炎炎设计 2019-12-21 12:44:45
我在某处读到该isset()函数将空字符串视为TRUE,因此isset()这不是从HTML表单验证文本输入和文本框的有效方法。因此,您可以empty()用来检查用户是否键入了某些内容。isset()函数将空字符串视为是真的TRUE吗?那我应该在什么情况下使用isset()呢?我应该经常!empty()检查是否有东西吗?例如代替if(isset($_GET['gender']))...使用这个if(!empty($_GET['gender']))...
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

isset vs.!empty


自由贸易协定:


“ isset()检查变量的值是否包含(False,0或空字符串),但不包含NULL。如果var存在,则返回TRUE;否则返回FALSE。


另一方面,empty()函数检查变量是否具有空值,空字符串,0,NULL或False。如果var具有非空且非零值,则返回FALSE。”


查看完整回答
反对 回复 2019-12-21
?
翻阅古今

TA贡献1780条经验 获得超5个赞

以最一般的方式:


isset测试变量(或数组的元素或对象的属性)是否存在(并且不为null)

empty 测试变量(...)是否包含一些非空数据。


回答问题1:


$str = '';

var_dump(isset($str));


boolean true

因为变量$str存在。



而问题2:


您应该使用isset来确定变量是否存在;例如,如果要获取一些数据作为数组,则可能需要检查是否在该数组中设置了键。 例如,

考虑$_GET/ $_POST。


现在,要发挥其价值,当您知道有这样一个价值时:这就是的工作empty。


查看完整回答
反对 回复 2019-12-21
?
心有法竹

TA贡献1866条经验 获得超5个赞

两种方法都不是检查有效输入的好方法。


isset() 这是不够的,因为(如前所述)它将空字符串视为有效值。

! empty() 还不够,因为它拒绝可能为有效值的“ 0”。

将isset()结合使用对空字符串的相等性检查与结合使用是您检验输入参数是否具有值而不创建假阴性的最低要求:


if( isset($_GET['gender']) and ($_GET['gender'] != '') )

{

  ...

}

但是,“最低限度”是我的意思。以上所有代码所做的就是确定是否有的值$_GET['gender']。它并没有确定的值是否$_GET['gender']是有效的(例如,一个)。("Male", "Female","FileNotFound")


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信