2013-01-19 14 views
6

mój kod:Nie można porównać pusty ciąg

$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'); 

a wynik jest:

string(0) "" string(1) "" stop 

cały mój stan się nie udało i nie wiem dlaczego ..
ale jeśli robię $ warunek emptyString:

if($emptyString == '') die('should be here'); 

to daje mi wyniki:

should be here 

jeśli widzisz zarówno $ dislabled [0] i $ emptyString ma ten sam ciąg pusty, ale ma inną długość, Jeśli zrobię $ długość emptyString do 1, to:

$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'); 

stać:

string(1) " " string(1) "" stop 

ja Stil udało się porównać $ wyłączyć [0]

co mi brakowało?

==== Jak rozwiązać ===

najpierw próbuję

mb_detect_encoding($disabled[0]); 

następnie dać mi prowadzić

ASCII 

następnie próbuję:

var_dump(hexdec($disabled[0])) 

następnie daj mi wynik:

int(9) 

idę do tabeli ASCII i 9 = TAB klucz

to teraz robię warunek:

if(strcmp($disabled[0],'')) die('should be here'); 

tadaaa .. to pokazać:

should be here 

myślę strcmp może pracować dla wszystkich wartości klucza enter, tab i space .. jakikolwiek błąd dla mojej opinii?

+3

Wypróbuj 'var_dump (bin2hex ($ disabled [0]))'. '' "nie powinno być' (1) 'znakiem długim. – deceze

+2

Łańcuchy mają różne długości, ale oba są puste. Sugeruje to, że istnieje jakiś rodzaj problemu z kodowaniem znaków w jakimś miejscu lub jakiś znak niedrukowalny w drugim ciągu. – GordonM

+0

id do var_dump (bin2hex ($ disabled [0])); i otrzymałem: string (2) "39". Co oznacza? jaki warunek dla $ disabled [0] ma wartość PRAWDA? – kreamik

Odpowiedz

1

myślę

if(empty($disabled[0])) die('should be here'); 

jest lepszy sposób, aby sprawdzić, czy zmienna jest pusty PHP.

"" lub " " jest dla JavaScript.