当date_enabled为2且三个变量之一为空时,以下脚本应该创建错误。例如,当天为空时,脚本仍然不会回显该句子。 有人看到了这个问题吗?
$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 - 当我执行以下脚本时,它回显:它清空它的空(函数)。这意味着空和函数isEmpty,我创建的因为@Expert System的建议,也可以工作。
if (empty($day)){
echo "its empty";
}
if (!isset($day)){
echo "its not set";
}
if (isEmpty($day)){
echo "its empty (function)";
}
再次更新 - 上面的脚本确实正常工作。问题在于我的表格。它现在工作正常,感谢您的帮助。
答案 0 :(得分: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
的错误。
这个shoukd不是因为使用theususl / default配置选项的问题(即停止执行),而是与你的一起(可能只是猜测)。
答案 1 :(得分:0)
我认为你的问题中“空”的定义不清楚。如果你的问题中的空是指零长度字符串,则空函数不适合你。
来自PHP doucment的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";
}