我正在尝试这样一段代码:
$event = 0;
switch ($event) {
case 'content':
echo "/content";
break;
case 'start':
echo "/start";
break;
default :
echo "not available";
break;
}
这段代码在执行时打印/content
,所以…0(0,整数,赋值给$event变量)被评估为"内容"。为什么?
实际情况是这样的
0 == 'content'
Php尝试将字符串content
转换为整数。因为content
不等于int,所以它只是默认为0。
导致:
0 == 0
发生了从一种类型到另一种类型的隐式转换。
时间间隔('content')为0
这是因为php中在混合数字和字符串变量时定义运算符的方式:当字符串没有有效数字时,它被处理为0
So:
1+"xxx" => 1+0=1
0=="xxxx => 0==0=>true
etc..
这就是php的设计方式。我不喜欢它。