if(!empty)问题

时间:2009-07-14 08:08:40

标签: php

这有什么问题?如果$ forwardformat不为空,则运行“if语句”中的代码,但如果$ forwardformat为空,则“else”代码不会运行。有什么想法吗?!

while ($row = mysql_fetch_array($forwardresult)) {
    $forward = $row["id"];
    $forwardformat = str_replace(" ","",$forward);

    if (!empty($forwardformat)) {
        echo 'Exploring moves us <a href="casestudy.php?id=';
        echo $forwardformat;
        echo '">forward</a>';
    }
    else {
        echo "forward";
    }
}

5 个答案:

答案 0 :(得分:6)

查看空的事物清单视为空

如果var具有非空和非零值,则返回FALSE。

The following things are considered to be empty: 

■"" (an empty string)
■0 (0 as an integer)
■"0" (0 as a string)
■NULL
■FALSE
■array() (an empty array)
■var $var; (a variable declared, but without a value in a class)

答案 1 :(得分:3)

  1. 如果$ forwardformat不为空,它确实应该输入if语句。

  2. 关于else语句,只有在空的情况下它才会出现。所以你可能不得不考虑$ forwardformat不是空的。可能是白色空间?尝试在边界之间回显$ forward以确保这一点。

答案 2 :(得分:2)

我认为,你的问题就在这一行:


$forwardformat = str_replace(" ","",$forward);

这只匹配空格字符。选项卡,换行符等不会被替换(并且在回显结果时不会真正显示在您的(html-)输出中。因此我建议您尝试


$forwardformat = preg_replace('/\s+/','',$forward);

HTH

Argelbargel

答案 3 :(得分:0)

尝试此操作来调查$ forwardformat

的内容
  
    while ($row = mysql_fetch_array($forwardresult)) {  
        $forward = $row["id"];  
        $forwardformat = str_replace(" ","",$forward);  
        if (!empty($forwardformat)) {  
            echo 'Exploring moves us <a href="casestudy.php?id='. $forwardformat .'">forward</a>';  
            //DEBUG
            echo "<textarea>";
            var_dump($forwardformat);
            echo "</textarea>";
        }  
        else {  
            echo "forward";  
        }  
    }  

答案 4 :(得分:0)

如果您的数据库中有多字节字符串数据(如常见的UTF-8编码)...

检查mb_strlen()...将它与strlen()进行比较,如果它真的为空,则返回0。