这有什么问题?如果$ 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";
}
}
答案 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)
如果$ forwardformat不为空,它确实应该输入if语句。
关于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。