2016-11-10 4 views
2

Я пытался кусок кода, как это:состояние переключателя оценивает неправильно на нуле

$event = 0; 

switch ($event) { 
    case 'content': 
     echo "/content"; 
     break; 
    case 'start': 
     echo "/start"; 
     break; 
    default : 
     echo "not available"; 
     break; 
} 

Этот код печатает /content, когда выполняется, так что ... 0 (ноль, целое число, присваивается переменной $ событий) оценивается как «контент». Почему?

+1

integer 'content == 0' – AbraCadaver

ответ

5

Это то, что на самом деле происходит

0 == 'content' 

Php пытается бросить строку content в целое число. Поскольку content оленья кожа равна в Int, он просто по умолчанию 0.

Результирующее в:

0 == 0 
1

неявное преобразование из одного типа в другой происходит.

intval («содержание») равно 0.

1

Это потому, что путь операторы определены в PHP при смешивании числовых и строковых переменных: Если строка не имеет действительного числа, он обрабатывается как 0

So: 
1+"xxx" => 1+0=1 
0=="xxxx => 0==0=>true 
etc.. 

Это просто способ, разработанный php. Мне не нравится btw

Смежные вопросы