在我的php文件中,我有这样的陈述:
if($_POST['married'] === true) $married = 'yup' else $married = 'nop';
但如果我不评论,我的php结果页面就会变空。它实际上崩溃了。 我从不同的地方发布到这个PHP,在POST值中我有“已婚”值。它确实是空的(不是真或假),但这与它无关。 我也是这样试过的:
if($_POST['married'] === '') $married = 'yup' else $married = 'nop';
同样的结果。空白页。 我的语法有问题吗?我看不出我的问题。 请帮帮我。
答案 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'
是一个声明,需要用分号(;)来终止。