苦苦挣扎,if,empty,和,或

时间:2013-06-01 14:39:40

标签: php if-statement string

当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)";
    }

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

2 个答案:

答案 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";
}