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

我在某处读到该isset()函数将空字符串视为TRUE,因此isset()这不是从HTML表单验证文本输入和文本框的有效方法。


因此,您可以empty()用来检查用户是否键入了某些内容。


isset()函数将空字符串视为是真的TRUE吗?


那我应该在什么情况下使用isset()呢?我应该经常!empty()检查是否有东西吗?


例如代替


if(isset($_GET['gender']))...

使用这个


if(!empty($_GET['gender']))...


炎炎设计
浏览 390回答 3
3回答

繁华开满天机

isset vs.!empty自由贸易协定:“ isset()检查变量的值是否包含(False,0或空字符串),但不包含NULL。如果var存在,则返回TRUE;否则返回FALSE。另一方面,empty()函数检查变量是否具有空值,空字符串,0,NULL或False。如果var具有非空且非零值,则返回FALSE。”

翻阅古今

以最一般的方式:isset测试变量(或数组的元素或对象的属性)是否存在(并且不为null)empty 测试变量(...)是否包含一些非空数据。回答问题1:$str = '';var_dump(isset($str));给boolean true因为变量$str存在。而问题2:您应该使用isset来确定变量是否存在;例如,如果要获取一些数据作为数组,则可能需要检查是否在该数组中设置了键。 例如,考虑$_GET/ $_POST。现在,要发挥其价值,当您知道有这样一个价值时:这就是的工作empty。

心有法竹

两种方法都不是检查有效输入的好方法。isset() 这是不够的,因为(如前所述)它将空字符串视为有效值。! empty() 还不够,因为它拒绝可能为有效值的“ 0”。将isset()结合使用对空字符串的相等性检查与结合使用是您检验输入参数是否具有值而不创建假阴性的最低要求:if( isset($_GET['gender']) and ($_GET['gender'] != '') ){  ...}但是,“最低限度”是我的意思。以上所有代码所做的就是确定是否有的值$_GET['gender']。它并没有确定的值是否$_GET['gender']是有效的(例如,一个)。("Male", "Female","FileNotFound")
打开App,查看更多内容
随时随地看视频慕课网APP