empty()在PHP中不起作用

时间:2014-03-26 23:13:07

标签: php

我正在使用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正确解析,但确实如此。

6 个答案:

答案 0 :(得分:1)

POST变量不包含任何内容。要么它在表格上不存在,要么拼错了。

根据文档,null为空。

http://us3.php.net/empty

  

如果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);                 
                };