我正在尝试使用if语句执行以下操作。如果POST是空的,或者如果它中有man,我想将$ paid设置为0但是如果POST集中的日期支付为1.我认为我没有这个正确的
if (!empty($_POST['paiddate'])| if($_POST['paiddate'] != 0000-00-00)
{
$paid = 1;
} else
{
$paid = 0;
}
答案 0 :(得分:3)
您的代码存在一些错误。
有一个冗余的if
声明。
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;
如果您稍后在$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;
}