请问case语句

请教case语句
$a = '*';
switch($a)
{
  case 1: echo ' (int)one';
  case 0: echo ' (int)zero';
  case '0': echo ' (string)zero';
  case '*': echo ' (string)star';
  case true: echo ' (bool)true';
  case false: echo ' (bool)false';

上面这段为什么输出//(int)zero (string)zero (string)star (bool)true (bool)false 
而不是输出//(string)star (bool)true (bool)false

------解决方案--------------------
每一句后面你都没写 break;它就继续匹配下一个case
------解决方案--------------------
因为case是弱类型比较
将字符串与数字比较的时候,字符串会被强制转换成数字

而你这个字符串强制转换后是0

所以就与0相等了