需在雙層 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 不支持標籤,僅支持數字)。foreach ($pages as $p) {
foreach ($p['blocks'] as $b) {
if (match($b)) {
// ...
break 2; // 直接跳出兩層
}
}
}