if语句,看是否为空或如果不是0000-00-00

时间:2014-06-01 00:47:46

标签: php

我正在尝试使用if语句执行以下操作。如果POST是空的,或者如果它中有man,我想将$ paid设置为0但是如果POST集中的日期支付为1.我认为我没有这个正确的

if (!empty($_POST['paiddate'])| if($_POST['paiddate'] != 0000-00-00)
{
    $paid = 1;
} else
{
    $paid = 0;
}

3 个答案:

答案 0 :(得分:3)

您的代码存在一些错误。

  1. 有一个冗余的if声明。

  2. AND和OR操作的编写方式如下:a && ba || b

  3. 字符串用引号括起来。 0000-00-00应该是一个字符串。

  4. 所以你的代码变成了:

    if (!empty($_POST['paiddate']) || $_POST['paiddate'] != '0000-00-00')
    {
        $paid = 1;
    }
    else
    {
        $paid = 0;
    }
    

    您可以使用三元运算符进一步增强它:

    $paid = !empty($_POST['paiddate']) || $_POST['paiddate'] != '0000-00-00' ? 1 : 0;
    

    如果您稍后在$paid内使用if ($paid),则可以进一步缩短为:{/ p>

    $paid = !empty($_POST['paiddate']) || $_POST['paiddate'] != '0000-00-00';
    

    如果你发现它更具可读性,只能访问一次POST数组:

    $paidDate = $_POST['paiddate'];
    $paid = !empty($paidDate) || $paidDate != '0000-00-00';
    

答案 1 :(得分:0)

您的代码应该像这样重构:

if ((isset($_POST['paid date']) && !empty($_POST['paid date'])) || $_POST['paid date'] != '0000-00-00') {
  $paid = 1;
}
else {
  $paid = 0;
}

请注意我添加isset()!empty()的方式,检查数组中是否设置了_POST['paid date']&不是空的。你|永远不会工作。此外0000-00-00需要使用单引号('0000-00-00')才能使其作为字符串值而不是奇怪的等式0000减去00减去00.最后,它需要为||正确的or语法。此复合if条件结构也是100%不正确的:

if ([something]) || if([another thing])

它应始终在一个if条件中(如在我的代码中重新编辑):

if ([something] || [another thing])

我也不理解你较大的逻辑,但我建议使用布尔TRUE / FALSE逻辑,而不是这样:

if ((isset($_POST['paid date']) && !empty($_POST['paid date'])) || $_POST['paiddate'] != '0000-00-00') {
  $paid = TRUE;
}
else {
  $paid = FALSE;
}

答案 2 :(得分:0)

你不能以这种方式使用if语句。标准方法

if ((condition 1) || (condtion 2)) 
{
some code 
}

这是解决方案。

if ( !empty($_POST['paiddate']) || ($_POST['paiddate'] != "0000-00-00" ))
{
    $paid = 1;
} else
{
    $paid = 0;
}