当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";
}
UPDATE -当我执行以下脚本时,它返回:它是空的,它是空的(函数)。这意味着empty和我根据@Expert System的建议创建的函数isEmpty也可以工作。
if (empty($day)){
echo "its empty";
}
if (!isset($day)){
echo "its not set";
}
if (isEmpty($day)){
echo "its empty (function)";
}
UPDATE AGAIN -上面的脚本确实正确工作。问题出在我的形式上。现在运行正常,谢谢你的帮助。
我认为你的问题中"空"的定义是不清楚的。如果您的问题中的empty表示零长度字符串,那么empty函数不适合您。
empty() from PHP document
确定变量是否为空。变量是如果不存在或其值为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";
}
试试下面的代码:
$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
级别出现错误。对于ususl/default配置选项,这应该不会导致问题(即停止执行),但对于您的配置选项,可能会(只是猜测)。