为什么这个IF语句会崩溃我的php?

时间:2013-10-11 10:30:38

标签: php if-statement

在我的php文件中,我有这样的陈述:

if($_POST['married'] === true) $married = 'yup' else $married = 'nop';

但如果我不评论,我的php结果页面就会变空。它实际上崩溃了。 我从不同的地方发布到这个PHP,在POST值中我有“已婚”值。它确实是空的(不是真或假),但这与它无关。 我也是这样试过的:

if($_POST['married'] === '') $married = 'yup' else $married = 'nop';

同样的结果。空白页。 我的语法有问题吗?我看不出我的问题。 请帮帮我。

9 个答案:

答案 0 :(得分:3)

您没有正确使用if

if($_POST['married'] == true)
{
    $married = 'yup';
}
else
{
    $married = 'nop';
}

===也不能用于POST,因为它会自动将所有内容作为字符串发布; ===比较器比较数据类型和内容。

答案 1 :(得分:2)

分号伙伴!!

if($_POST['married'] === '')  $married = 'yup'; else $married = 'nop';

答案 2 :(得分:2)

你忘了把分号放在'''后面。 它会

 if($_POST['married'] === true) $married = 'yup'; else $married = 'nop';

或者,如果您想使用oneliner,那么:

 ($_POST['married']===true)?($married = 'yup'):($married = 'nop');

答案 3 :(得分:2)

您需要在每个语句后添加分号:

if($_POST['married'])
    $married = 'yup';
else
    $married = 'nop';

您可能还想检查是否先使用isset设置了它:

if(isset($_POST['married']) && $_POST['married'] === true)
    $married = 'yup';
else
    $married = 'nop';

http://php.net/manual/en/function.isset.php

您也可以使用tenary编写声明:

$married = isset($_POST['married']) && $_POST['married'] === true ? 'yup' : 'nop';

关于tenary运营商的更多信息:http://www.sitepoint.com/using-the-ternary-operator/

答案 4 :(得分:1)

您错过了if语句中的分号,并尝试检查是否设置了$ _POST变量

if(isset($_POST['married']) === true) 
  $married = 'yup';//Here you missed the semicolon
else 
  $married = 'nop';

答案 5 :(得分:1)

我假设show_errors = false所以它正在默默地轰炸?如果是这样(在开发期间)确保打开error reporting

话虽如此,在使用它们之前,您应始终检查$_POST / $_GET值。 e.g。

$married = isset($_POST['married']) && ((bool)$_POST['married'])
         ? 'yup'
         : 'nop';

答案 6 :(得分:1)

$married = 'yup'之后添加分号并使用isset来确定是否设置了$_POST值:

if(isset($_POST['married']) && $_POST['married'] == true)
    $married = 'yup';
else
    $married = 'nop';

答案 7 :(得分:1)

空操作员会帮助你:

if(!empty($_POST['married'])) {
  $married = 'yup';
}
else {
  $married = 'nop';
}

答案 8 :(得分:1)

由于缺少分号,您的页面崩溃了。

if()不需要分号,因为它是一个子句而不是语句。 $married = 'yup'是一个声明,需要用分号(;)来终止。