我的代码:
$disabled = $this->access->get_access('disable_header');
$emptyString = '';
var_dump($emptyString);
var_dump($disabled[0]);
if($disabled[0] == '') die('should be here');
if($disabled[0] == ' ') die('should be here');
die('stop');
结果是:
string(0) "" string(1) "" stop
我所有的条件都失败了,我不知道为什么..
但是如果我使 $emptyString 条件:
if($emptyString == '') die('should be here');
它给了我结果:
should be here
如果您看到 $dislabled[0] 和 $emptyString 具有相同的空字符串,但长度不同,如果我将 $emptyString 长度设为 1,则:
$disabled = $this->access->get_access('disable_header');
$emptyString = ' ';
var_dump($emptyString);
var_dump($disabled[0]);
if($disabled[0] == '') die('should be here');
if($disabled[0] == ' ') die('should be here');
die('stop');
变得 :
string(1) " " string(1) "" stop
我仍然无法比较 $disable[0]
我错过了什么?
====如何解决===
首先我尝试
mb_detect_encoding($disabled[0]);
然后给我结果
ASCII
然后我尝试:
var_dump(hexdec($disabled[0]))
然后给我结果:
int(9)
我去 ascii 表和 9 = TAB 键
那么现在我提出条件:
if(strcmp($disabled[0],'')) die('should be here');
tadaaa .. 它显示:
should be here
我认为 strcmp 可以适用于所有输入、制表符和空格键值。我认为有什么错误吗?