当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 -当我执行以下脚本时,它会回显: it empty,it empty (function)。这意味着empty和我根据@Expert System的建议创建的函数isEmpty也可以工作。
if (empty($day)){
echo "its empty";
}
if (!isset($day)){
echo "its not set";
}
if (isEmpty($day)){
echo "its empty (function)";
}再次更新-上面的脚本确实工作正常。问题出在我的表单上。它现在运行得很好,感谢您的帮助。
发布于 2013-06-01 23:11:01
我相信你质询中“空”一词的定义并不清楚。如果问题中的空表示零长度字符串,则 empty 函数不适合您。
PHP文档中的空()定义
确定变量是否被视为空。如果变量不存在或其值等于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-01 22:57:34
请尝试以下代码:
$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配置选项造成问题(即停止执行),但对于您的配置选项,这可能会造成问题(只是猜测)。
https://stackoverflow.com/questions/16873822
复制相似问题