当PHP中的变量看起来相等时2变量如何不相等?

时间:2013-12-07 16:28:23

标签: php

我遇到了一个非常奇怪的问题,我无法理解它。

我实际上有两个值,PHP说它们不相等,当它们在我眼中相等时。

我有两个变量:

$pattern = array('/index/' => 'index');
$uri = $_SERVER['REQUEST_URI'];

$array_key = array_keys($pattern);

echo $array_key[0];
echo $uri;

实际上,当我回复这两个时,我在浏览器中得到了完全相同的文字:

/index/

但是,如果我执行以下操作:

if ($array_key[0] == $uri) {
 echo 'Equals';
} else {
 echo 'Not Equals';
}

总是让我觉得他们不等于。

我不知道为什么会这样,但是现在我的思绪有些混乱了。有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:1)

试试这个

if (trim($array_key[0]) == trim($uri)) {
 echo 'Equals';
} else {
 echo 'Not Equals';
}

答案 1 :(得分:1)

如果代码说它们不相等,它们必须不相等。 变化

echo $array_key[0];
echo $uri;

echo "X" . $array_key[0] . "X";
echo "X" . $uri . "X";

我很确定你会看到不同。

答案 2 :(得分:1)

尝试strcmp($array_key[0],$uri)

答案 3 :(得分:0)

在PHP中,有一些空值字符串不能在回显上打印。见这个例子:

http://3v4l.org/qY1au

$ val1在字符串的末尾有一个\ 0,但var dump的打印值在结尾处不显示空字符串。将它与类似的字符串进行比较会返回false。 var_dump的字符串长度输出显示$ var1具有比$ var2更多的字符。

只有在使用trim函数后,值比较才会返回true。

你应该检查你的一个字符串是否包含\ 0。

之类的内容

你应该检查