If语句查看是否为空或者是否为0000-00-00


if statement to see if not empty or if not 0000-00-00

我正试图使这个if语句执行以下操作。如果POST是空的,或者其中有0000-00-00,我想将$paid设置为0,但如果POST中有日期,则设置为1。我想我写错了

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

你的代码有几个错误。

  1. if语句有冗余

  2. AND AND OR操作是这样写的:a && ba || b .

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

所以你的代码变成了:

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;

如果您稍后在if ($paid)中使用$paid,您可以进一步将其缩短为:

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

,如果你觉得它更容易读,只访问POST数组一次:

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

不能这样使用if语句。标准方法

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

这是解决方案。

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

你的代码应该这样重构:

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

注意我是如何在!empty()中添加isset()的,它检查_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;
}
相关文章: