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?
Wypróbuj 'var_dump (bin2hex ($ disabled [0]))'. '' "nie powinno być' (1) 'znakiem długim. – deceze
Ł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
id do var_dump (bin2hex ($ disabled [0])); i otrzymałem: string (2) "39". Co oznacza? jaki warunek dla $ disabled [0] ma wartość PRAWDA? – kreamik