我遇到了一个非常奇怪的问题,我无法理解它。
我实际上有两个值,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';
}
总是让我觉得他们不等于。
我不知道为什么会这样,但是现在我的思绪有些混乱了。有人可以帮帮我吗?
答案 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中,有一些空值字符串不能在回显上打印。见这个例子:
$ val1在字符串的末尾有一个\ 0,但var dump的打印值在结尾处不显示空字符串。将它与类似的字符串进行比较会返回false。 var_dump的字符串长度输出显示$ var1具有比$ var2更多的字符。
只有在使用trim函数后,值比较才会返回true。
你应该检查你的一个字符串是否包含\ 0。
之类的内容你应该检查