PHP if语句比较变量不返回true?

时间:2012-02-15 20:21:19

标签: php variables

这是我的代码 - 不确定它为什么不起作用:

<?php
$urlroot      = $_SERVER['HTTP_HOST'];
$urllink      = "http://" . $urlroot;
$DirPath      = getcwd() . "\n";
$InnermostDir = basename(rtrim($DirPath, '/'));
if ($InnermostDir == $urlroot) {
    $InnermostDir = 'home';
    echo $InnermostDir;
};
?>

如果我在echo$InnermostDir上执行$urlroot,则会显示域example.com。所以不确定为什么这不会回归呢?

3 个答案:

答案 0 :(得分:4)

$DirPath最后包含\n,但未删除,因此字符串不相等。

rtrim($DirPath, '/')只会从结尾删除/个字符,而不是\n。如果您还希望删除\n,则需要使用rtrim($DirPath, "/\n"),或者在设置\n时不要添加$DirPath

答案 1 :(得分:0)

用trim()包围两个变量,所以:

<?php
$urlroot      = $_SERVER['HTTP_HOST'];
$urllink      = "http://" . $urlroot;
$DirPath      = getcwd() . "\n";
$InnermostDir = basename(rtrim($DirPath, '/'));
if ( trim($InnermostDir) == trim($urlroot) ) {
    $InnermostDir = 'home';
    echo $InnermostDir;
};
?>

答案 2 :(得分:0)

如果我把它放在我的/ var / www目录中:

 <?php
$urlroot      = $_SERVER['HTTP_HOST'];
$urllink      = "http://" . $urlroot;
$DirPath      = getcwd() . "\n";
$InnermostDir = basename(rtrim($DirPath, '/'));
var_dump($InnermostDir);
var_dump($urlroot);
if ($InnermostDir == $urlroot) {
    $InnermostDir = 'home';
    echo $InnermostDir;
};
?>

用localhost / test.php调用它得到

  

string(4)“www”string(9)“localhost”

哪会失败if