我正试图使这个if语句执行以下操作。如果POST是空的,或者其中有0000-00-00,我想将$paid设置为0,但如果POST中有日期,则设置为1。我想我写错了
if (!empty($_POST['paiddate'])| if($_POST['paiddate'] != 0000-00-00)
{
$paid = 1;
} else
{
$paid = 0;
}
你的代码有几个错误。
-
if
语句有冗余 -
AND AND OR操作是这样写的:
a && b
和a || b
. -
字符串用引号括起来。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;
}