无法比较空字符串

kre*_*mik 6 php

我的代码:

$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。