0

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

$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";
            }

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

if (empty($day)){
    echo "its empty";
    }
if (!isset($day)){
    echo "its not set";
    }
if (isEmpty($day)){
    echo "its empty (function)";
    }

再次更新 - 上面的脚本确实可以正常工作。问题出在我的表格上。它现在工作正常,感谢您的帮助。

4

2 回答 2

0

试试这个代码:

$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";
}

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

于 2013-06-01T14:57:34.430 回答
0

我相信您问题中“空”的定义尚不清楚。如果您的问题中的空意味着零长度字符串,那么函数不适合您。

PHP 文档中的 empty() 定义

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

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

function isEmpty($var) {
    return !isset($var) || ($var == '');
}

然后

if (($date_enabled == 2) && 
    (isEmpty($year) || isEmpty($day) || isEmpty($month))){
    echo "You didn't enter a valid date";
}
于 2013-06-01T15:11:01.363 回答