我正在使用PHP 5.4并且我通过POST请求提交表单,并且我想检查其中一个值是否为null或填充。然而,条件似乎没有解决为真,我无法弄清楚我做错了什么。
以下是代码:
$route = $_POST['route'];
echo ("route: " . $route);//this is displaying 'route:null'
if(empty($route))
{
echo ("route2: " . $route);
}
我还尝试使用isset
is_null
和$route === null
$route == null
似乎无效。
我还尝试在true
语句中插入if
以确保true正确解析,但确实如此。
答案 0 :(得分:1)
POST变量不包含任何内容。要么它在表格上不存在,要么拼错了。
根据文档,null为空。
如果var存在并且具有非空的非零值,则返回FALSE。 否则返回TRUE。
以下内容被认为是空的:
"" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) $var; (a variable declared, but without a value)
答案 1 :(得分:1)
如果echo
显示null
,那么它不为空。它是一个字符串“null”,它是两个完全不同的东西。
这实际上是使用javascript发布到php时的常见问题。发布到php时,Javascript的null会转换为字符串,从而通过所有检查(empty()
,isset()
,...)。
查看这些问题的最简单方法是执行var_dump($_POST)
,它会准确地为您提供您在帖子中收到的内容。
在您的情况下,您收到字符串“null”,它绝不能通过empty()
检查。您需要检查$route=="null"
或修复您的JavaScript,以便它不会发送空值。
修复javascript是正确的方法。
答案 2 :(得分:0)
Empty - 确定变量是否为空。如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,empty()不会生成警告。
尝试使用(或添加):
if(is_null($route))
或
if(!isset($route))
答案 3 :(得分:0)
if( isset($_POST['route']) && !empty($_POST['route']) ) {
$route = $_POST['route'];
echo "Route: $route";
} else {
echo "Route: None specified";
}
答案 4 :(得分:0)
因为$_POST
作为字符串返回null
,我必须这样做:
$route = $_POST['route'];
echo ("route: " . $route);
if($route == 'null')//surround null in quotes
{
echo ("route2: " . $route);
}
答案 5 :(得分:0)
尝试一下;)
function convert_null($data)
{
$data = str_replace(null,"",$data);
$data = str_replace("null","",$data);
$data = trim($data);
return $data;
};
convert_null($route);
if(empty($route))
{
echo ("route2: " . $route);
};