首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if、empty、and或

使用if、empty、and或
EN

Stack Overflow用户
提问于 2013-06-01 22:39:40
回答 2查看 92关注 0票数 0

当date_enabled为2并且三个变量中的一个为空时,以下脚本应该会创建一个错误。例如,当day为空时,脚本仍然不会响应句子。有人看到问题了吗?

代码语言:javascript
复制
$year = $_POST['date-year'];
$month = $_POST['date-month'];
$day = $_POST['date-day'];
$date_enabled = 2;     
if ((($date_enabled ==2)) && ((empty($year) || empty($day) || empty($month)))){
            echo "You didn't enter a valid date";
            }

UPDATE -当我执行以下脚本时,它会回显: it empty,it empty (function)。这意味着empty和我根据@Expert System的建议创建的函数isEmpty也可以工作。

代码语言:javascript
复制
if (empty($day)){
    echo "its empty";
    }
if (!isset($day)){
    echo "its not set";
    }
if (isEmpty($day)){
    echo "its empty (function)";
    }

再次更新-上面的脚本确实工作正常。问题出在我的表单上。它现在运行得很好,感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-01 23:11:01

我相信你质询中“空”一词的定义并不清楚。如果问题中的空表示零长度字符串,则 empty 函数不适合您。

PHP文档中的空()定义

确定变量是否被视为空。如果变量不存在或其值等于FALSE,则认为该变量为空。如果变量不存在,则empty()不会生成警告。

也许这个自定义函数可以在您的上下文中工作

代码语言:javascript
复制
function isEmpty($var) {
    return !isset($var) || ($var == '');
}

然后

代码语言:javascript
复制
if (($date_enabled == 2) && 
    (isEmpty($year) || isEmpty($day) || isEmpty($month))){
    echo "You didn't enter a valid date";
}
票数 0
EN

Stack Overflow用户

发布于 2013-06-01 22:57:34

请尝试以下代码:

代码语言:javascript
复制
$year = isSet($_POST["date-year"]) ? $_POST["date-year"] : "";
$month = isSet($_POST["date-month"]) ? $_POST["date-month"] : "";
$day = isSet($_POST["date-day"]) ? $_POST["date-day"] : "";
$date_enabled = 2;
if ((($date_enabled ==2)) && ((empty($year) || empty($day) || empty($month)))){
    echo "You didn't enter a valid date";
}

问题可能是当您尝试访问$_POST数组中未定义的索引时,引发了级别E_NOTICE的错误。这应该不会对just/default配置选项造成问题(即停止执行),但对于您的配置选项,这可能会造成问题(只是猜测)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16873822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档