基本上我有代码:
echo strcasecmp('hello', ' ') ? 'true' : 'false';
我不太明白,我期待这里的结果是假的而不是真的,因为字符串不相等......
还有另一种更好的方法来比较INSENSITIVE案例中的字符串吗?
答案 0 :(得分:10)
来自http://php.net/manual/en/function.strcasecmp.php
int strcasecmp(string $ str1,string $ str2)
返回<如果str1小于str2,则为0; >如果str1大于str2则为0,如果它们相等则为0。
你需要像
那样做echo strcasecmp('hello', ' ') == 0 ? 'true' : 'false';
答案 1 :(得分:3)
这应该是
echo (strcasecmp('hello', ' ') === 0) ? 'true' : 'false';
如果两个字符串相等,strcasecmp
将返回0。
答案 2 :(得分:1)
你错误地解释了结果。 strcasecmp
返回的内容,according to the docs是一个数字,如果字符串不相等则不等于零,如果它们相等则为零。如您所知,在PHP中,零对应于false,非零对应于true。因此,您的测试的正确版本
echo (strcasecmp('hello', ' ') === 0) ? 'true' : 'false';
或者,
echo strcasecmp('hello', ' ') ? 'false' : 'true';
我更喜欢第一个,更加冗长,并且不包含对布尔值的任何隐式类型转换。