2010-04-24 206 views
2

这两个值都是'2',但我没有得到一个真实的。为什么?为什么'=='在PHP中不起作用?

echo $getuser. "<br />"; 
echo $userurl. "<br />"; 
    if ($getuser == $userurl) { 
     echo "true <br />"; 
    } 

结果

2 
2 
+0

我不知道PHP,但也许其中的一个是字符串,另一个是整数? – house9 2010-04-24 03:34:18

+0

@ house9:PHP会将它们转换为相同的类型以检查它们是否为'==',您必须使用'==='来进行类型特定的比较。 – animuson 2010-04-24 03:36:04

+0

如果上面的代码以$ getuser = 2和$ geturl = 2开始,您会得到一个真正的响应吗? – Smandoli 2010-04-24 03:37:42

回答

1

当我尝试

$getuser = 2; 
$userurl = 2; 

echo $getuser. "<br />"; 
echo $userurl. "<br />"; 
if ($getuser == $userurl) { 
    echo "true <br />"; 
} 

结果:

2 
2 
true 

为我工作。在XAMPP(Windows)和Linux(Apache)上。所以不是有问题可能在配置或一些地方...

4

呼应出来的,使用var_dump(),看看到底什么是存储在这些变量:

var_dump($getuser); echo "<br />"; 
var_dump($userurl); echo "<br />"; 
+0

我得到'string(1)“2”string(7)“2”' – patrick 2010-04-24 03:52:12

+0

好的我知道他们来自哪里。我从'/ users/3104'中删除一个URL到'3104',所以我使用'$ userurl = substr($ users ['url'],7)来删除7个字符。 “
”;“我尝试使用trim($ userurl,“\ 0”)来摆脱空字节,但它不工作。 – patrick 2010-04-24 04:03:27

+2

找到解决方案:'$ userurl = ltrim($ users ['url'],“users /”);'谢谢! – patrick 2010-04-24 04:13:10

4

你可能有一些流浪空格或其他字符这不容易,或者可能不可能通过视觉检测。

使用

var_dump($getuser); 
var_dump($userurl); 

注重字符串的长度。考虑使用TRIM()如果需要

+0

+1用于专门调用空格。这也是我的直觉。 – 2010-04-24 03:43:43

3

可包含在虚拟空间中,这样使用

echo $getuser. "<br />"; 
echo $userurl. "<br />"; 
    if (trim($getuser) == trim($userurl)) { 
     echo "true <br />"; 
    } 
相关问题