2017-03-24 1 views
-1

私はPHP7.1にPHP5.3から生産コードを移行するために周りのプレーをしていた、と私はあなたが PHP7.1でなぜ2レベルのブレークが削除されましたか、その代替ソリューションは何でしょうか?

コードスニペット以下
$aud_found = false; 
    $audience = null; 
    foreach ($rules[0]['filterd_data_region'] as $k => $aud) { 
     if ($aud_found) 
      break; 

     $country = array(); 

     //country 
     if ($aud['area_type'] == 'country') { 
      foreach ($aud['selected_tag_data']['selected_content_tags'] as $arr){ 
       if ($aud_found) 
        break 2; 

       if ($ucountry == $arr['id']) { 
        $audience = $rules[0]['filterd_data_region'][$k]; 
        $audience_id = $k; 
        $aud_found = 'country'; 
       } 
      } 
     } 

     //region 
     if ($aud['area_type'] == 'region') { 
      foreach ($aud['selected_tag_data']['selected_content_tags'] as $arr){ 
       if ($aud_found) 
        break 2; 

       if ($uregion == $arr['id']) { 
        $audience = $rules[0]['filterd_data_region'][$k]; 
        $audience_id = $k; 
        $aud_found = 'region'; 
       } 
      } 
     } 

    } 
+1

私の答えはあなたに役立つのですか? – vanloc

+0

少なくとも実行されますが、ロジックを書き直す必要があります。 –

答えて

1

ためその代替解決策になる可能性がどのようなエラー

PHP Fatal error: Cannot 'break' 2 levels

下になりました変更してこの問題を解決することができます:

break 2; 

で:

break; 

1つのループ内にあり、2つのネストループではありません。だからこそ、「2を壊す」ことはできません(2はあなたが入れ子にされたループの中にあることを示すためです)。このエラーは、PHP7が以前のバージョンよりも厳しいために表示されます。

注:if文から「中断する」ことはできません。あなたはループから壊れるだけです。

関連する問題