PHP - breakの引数で脱出するループの段数を指定

foreach だけ抜ける。

<?php
do{
  $list = array(1,2,3,4,5);
  foreach($list as $item){
    echo $item."\n";
    if($item > 2){
      break;
    }
  }
  echo "Hey\n";
}while(false);
C:\> php break1.php
1
2
3
Hey


引数 2 を指定しているので、do 〜 while も抜ける。

<?php
do{
  $list = array(1,2,3,4,5);
  foreach($list as $item){
    echo $item."\n";
    if($item > 2){
      break 2;
    }
  }
  echo "Hey\n";
}while(false);
C:\> php break2.php
1
2
3

単なる break で一番外側に出られると勘違いしたバグっぽいスクリプトが、
今日もどこかで動いているかも...