Vit*_*lov 4 php switch-statement
这是我的示例代码:
<?php
$t = 0;
switch( $t )
{
case 'add':
echo 'add';
break;
default:
echo 'default';
break;
}
echo "<br/>";
echo system('php --version');
Run Code Online (Sandbox Code Playgroud)
这是输出(在codepad.org上测试 - 结果是相同的):
add
PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch (cli) (built: Feb 11 2012 03:26:01) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
您的变量$t具有整数值0.使用该switch语句,您告诉PHP首先将其与值'add'(字符串)进行比较.PHP 通过转换 'add'为整数来实现这一点,并且由于转换规则,结果证明是0.
结果,第一个分支被采取 - 这可能是令人惊讶的,但它也是预期的.
如果你这样做,你会看到预期的行为
$t = "0";
Run Code Online (Sandbox Code Playgroud)
现在,无论是$t和'add'都是字符串,所以没有神奇的转换正在进行,当然他们比较不等.