首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 巢狀循環中使用 break 優化跳出多層循環

     編輯:PHP 相關知識

場景

需在雙層 foreach 中匹配條件後,同時跳出內層與外層循環,避免繼續無意義迭代。

代碼示例

<?php
$data = [];
$page_type = 'home';
$blocktype = 'banner';

foreach ($config_content['pages'] as $page_type_key => $page_type_val) {
    if ($page_type_val['page_type'] === $page_type) {
        foreach ($config_content['pages'][$page_type_key]['blocks'] as $block_type_key => $block_type_val) {
            if ($block_type_val['blocktype'] === $blocktype) {
                // 處理 POST 數據
                foreach ($_POST as $key => $val) {
                    $data[$key] = is_string($val) ? trim($val) : $val;
                }
                $config_content['pages'][$page_type_key]['blocks'][$block_type_key]['settings'] = $data;

                break; // 跳出內層 blocks 循環
            }
        }
        break; // 跳出外層 pages 循環
    }
}

關鍵說明

  • break 默認僅跳出當前最內層循環;若需跳出多層,可使用 break 2(PHP 5.4+ 支持數字參數)。
  • 上例採用兩次 break 分層跳出,邏輯清晰且兼容舊版本。
  • 若循環層級更深,建議重構為函數並用 return 直接退出,或使用標籤式 break(PHP 不支持標籤,僅支持數字)。

替代寫法(break 2)

foreach ($pages as $p) {
    foreach ($p['blocks'] as $b) {
        if (match($b)) {
            // ...
            break 2; // 直接跳出兩層
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved