萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 遍歷二維陣列的三種實用方法(foreach 進階應用)

前言

二維陣列在 PHP 開發中極為常見,例如資料庫查詢結果、API 回傳資料、表單批次處理等。本文介紹三種遍歷二維陣列的實用技巧,幫助你靈活應對不同資料結構。

方法一:巢狀 foreach 判斷子陣列

適用於「不確定第二層是否為陣列」的混合結構:

<?php
$book = [
    'linux服務器配置與管理',
    'team' => ['lk', 'ok']
];

foreach ($book as $key => $val) {
    if (is_array($val)) {
        foreach ($val as $value) {
            echo $value . '<br>';
        }
    } else {
        echo "{$key} => {$val}<br>";
    }
}
/*
輸出:
0 => linux服務器配置與管理
lk
ok
*/
?>

方法二:雙層 foreach 輸出 HTML 表格

適用於資料庫查詢結果直接輸出表格:

<?php
// 假設 $row_mark 為資料庫查詢結果二維陣列
$row_mark = [
    ['id' => 1, 'name' => '張三', 'age' => 25],
    ['id' => 2, 'name' => '李四', 'age' => 30],
];

foreach ($row_mark as $row) {
    echo "<tr>";
    foreach ($row as $key => $value) {
        echo "<td width='80'>{$value}</td>";
    }
    echo "</tr>";
}
?>

方法三:關聯式二維陣列直接存取欄位

適用於結構固定的選單、導航、設定陣列:

<?php
$menu = [
    ['name' => '網站設定', 'url' => '?action=config&do=config'],
    ['name' => '驗證碼設定', 'url' => '?action=config&do=seccode'],
    ['name' => '模板管理', 'url' => '?action=config&do=tpl'],
    ['name' => '帳號管理', 'url' => '?action=admin&do=list'],
    ['name' => '新增帳號', 'url' => '?action=admin&do=add'],
];

foreach ($menu as $item) {
    echo "name: {$item['name']}<br>";
    // 同時取得 URL:$item['url']
}
?>

進階技巧:array_column 快速提取單欄位

PHP 5.5+ 可用 array_column() 快速取得某欄位所有值:

<?php
$names = array_column($menu, 'name');
$urls  = array_column($menu, 'url');
// $names = ['網站設定', '驗證碼設定', ...]
?>

常見遍歷函數對比

函數/結構適用場景特點
foreach最通用,支援關聯/索引陣列語法簡潔,可直接取得 key/value
for + count需控制索引、反向遍歷效能略高,但寫法較繁瑣
while + list + each舊式代碼維護PHP 7.2+ 棄用 each(),不建議新專案使用
array_walk / array_map需對每個元素套用函數函數式風格,適合資料轉換

最佳實踐建議

  1. 優先使用 foreach,可讀性最高
  2. 大量資料時考慮 array_column、array_map 避免巢狀迴圈
  3. 遍歷前先用 is_array() 或 empty() 判斷防止警告
  4. 輸出 HTML 時記得 htmlspecialchars() 防 XSS
copyright © 萬盛學電腦網 all rights reserved