1. 程式人生 > >PHP switch分支語句中省略break後還會執行其他case的原因分析

PHP switch分支語句中省略break後還會執行其他case的原因分析

請分析以下PHP程式碼的輸出結果:

$a= 'dog';
switch($a) {
  case 'cat':
    echo "\$a is cat";
  case 'dog':
    echo "\$a is dog";
  case 'pig':
    echo "\$a is pig";
}

最終的輸出結果是:$a is dog $a is pig

原因分析:

switch會根據條件,跳轉到第一個匹配的case處開始執行。case只是一個供switch跳轉的標記,並沒有劃分區塊的作用。所以即使有多個case與switch匹配,也只會跳轉到第一個匹配的case開始往下執行。如果不break, 會從匹配的第一個case開始,一直執行到整個switch結構結束。