phpで多重ループを抜ける

いいコードか、どうかは別にして

多重forループを簡単に抜ける方法。ぐぐったら一発で出てくるんですが、初めて使って結構感心したのでメモメモ。

 

例えば

こんな感じで、

  1. 複数の記事情報が入った$articlesがあり、記事の数だけforループする
  2. ひとつの記事には、複数のタグがついていて、タグを持っている数だけforループする
  3. タグに”target!”が含まれるものを見つけたら$targetに現在チェックしている$articleを格納する

ここで処理を中断したい場合。(”target!”というタグをもった一番最初の記事だけを取得したい場合)

こんな感じで、breakを2回書いて、ループ全体を抜けることがあると思います。

ですが、phpでは多重ループを一度で抜けるbreak文があって

breakの後に整数を与えると、ループを何回抜けるかを指定できます。上記の場合break 2なので、2回ループを抜けるように指定しています。

簡単で便利。もちろん使いドコロを考えて、ですが。

 

[2013/04/01追記]

投稿してすぐで申し訳ないのですが、breakに関して、php5.4で変更がありました。ご指摘いただいた@kodamさん本当にありがとうございます。

5.4における変更点

一応、上記サンプルであげたbreak n(整数)は、従来通り動作するようですが

break $fooやbreak bar()などで、動的にbreakする回数を指定するような方法は廃止になったようです。最初からこれちゃんとチェックしてから書くべきでした、申し訳ないです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です