我的代码:
$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');
Run Code Online (Sandbox Code Playgroud)
结果是:
string(0) "" string(1) "" stop
Run Code Online (Sandbox Code Playgroud)
所有我的条件都失败了,我不知道为什么..
但如果我使$ emptyString条件:
if($emptyString == '') die('should be here');
Run Code Online (Sandbox Code Playgroud)
它给我的结果:
should be here
Run Code Online (Sandbox Code Playgroud)
如果你看到$ 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');
Run Code Online (Sandbox Code Playgroud)
成为:
string(1) " " string(1) "" stop
Run Code Online (Sandbox Code Playgroud)
我stil未能比较$ disable [0]
我错过了什么?
====如何解决===
首先我试试
mb_detect_encoding($disabled[0]);
Run Code Online (Sandbox Code Playgroud)
然后给我结果
ASCII
Run Code Online (Sandbox Code Playgroud)
那我试试:
var_dump(hexdec($disabled[0]))
Run Code Online (Sandbox Code Playgroud)
然后给我结果:
int(9)
Run Code Online (Sandbox Code Playgroud)
我去ascii表和9 = TAB键
那么现在我有条件:
if(strcmp($disabled[0],'')) die('should be here');
Run Code Online (Sandbox Code Playgroud)
tadaaa ..它显示:
should be here
Run Code Online (Sandbox Code Playgroud)
我认为strcmp可以适用于所有输入,制表符和空格键值..我的意见有什么错误吗?
小智 1
我认为
if(empty($disabled[0])) die('should be here');
Run Code Online (Sandbox Code Playgroud)
是使用 PHP 检查变量是否为空的更好方法。
""或" "用于 JavaScript。