web-dev-qa-db-ja.com

条件が満たされたときにforeachを抜け出す方法は?

オブジェクトを処理するときに、通常、次のようにforeachを使用してループする状況があります。

foreach ($main_object as $key=>$small_object) {
...

}

しかし、私はこのようにそこに条件を置く必要があります:

foreach ($main_object as $key=>$small_object) {
   if ($small_object->NAME == "whatever") {
      // We found what we need, now see if he right time.
      if ($small_object->TIME == $sought_time) {
          // We have what we need, but how can we exit this foreach loop?
      }
}

これを行うためのエレガントな方法は何ですか?一致が見つかった場合にループし続けるのは無駄です。それとも、これを行うための別のアプローチがありますか?おそらくforeachの代わりにforを使用していますか?

13
Edward

PHPドキュメントから:

breakは、現在のfor、foreach、while、do-while、またはswitch構造の実行を終了します。

したがって、はい、それを使用してforeachループから抜け出すことができます。

33
ciruvan

If条件内でbreakステートメントを使用します。

if ($small_object->TIME == $sought_time) {
   break;       
}

breakステートメントはループから抜け出します。

9
Code Lღver