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

PHP foreach 遍歷二維陣列實用技巧與避坑指南

     編輯:PHP 相關知識

PHP foreach 遍歷二維陣列實用技巧與避坑指南

foreach 是 PHP 遍歷陣列最常用的語法,本文示範如何正確處理一維、二維與混合結構陣列,避免常見的「輸出 Array 字串」問題。

基本語法

foreach ($array as $value) { ... }           // 只取值
foreach ($array as $key => $value) { ... }   // 取鍵與值

問題示範:直接輸出二維陣列

$team = ['lk', 'ok'];
$book = ['Linux伺服器設定', $team];

foreach ($book as $k => $val) {
    echo "$k => $val
"; } // 輸出: // 0 => Linux伺服器設定 // 1 => Array ← 問題:子陣列直接輸出成 "Array"

解法:加入 is_array() 判斷遞迴處理

$team = ['lk', 'ok'];
$book = ['Linux伺服器設定', $team];

foreach ($book as $k => $val) {
    if (is_array($val)) {
        foreach ($val as $v) {
            echo "$v
"; // lk, ok } } else { echo "$k => $val
"; // 0 => Linux伺服器設定 } }

實務常見:關聯式二維陣列遍歷

$menu = [
    ['name'=>'系統設定', 'url'=>'?action=config'],
    ['name'=>'驗證碼設定', 'url'=>'?action=seccode'],
    ['name'=>'模板管理', 'url'=>'?action=tpl'],
    ['name'=>'帳號管理', 'url'=>'?action=admin'],
    ['name'=>'新增帳號', 'url'=>'?action=add'],
];

foreach ($menu as $item) {
    echo "名稱: {$item['name']} / 連結: {$item['url']}
"; } // 輸出每項 name 與 url

進階:多層巢狀結構遞迴遍歷

function printArray($arr, $indent = 0) {
    $prefix = str_repeat('  ', $indent);
    foreach ($arr as $k => $v) {
        if (is_array($v)) {
            echo "{$prefix}[$k] => Array
"; printArray($v, $indent + 1); } else { echo "{$prefix}[$k] => $v
"; } } } $data = [ 'user' => ['name'=>'John', 'age'=>30], 'posts' => [ ['title'=>'Post 1', 'tags'=>['php', 'mysql']], ['title'=>'Post 2', 'tags'=>['js', 'vue']], ] ]; printArray($data);

foreach 重要特性

  • 操作的是**陣列副本**,修改 $value 不影響原陣列
  • 需修改原陣列請用**參考傳遞**:foreach ($arr as &$v) { $v *= 2; }
  • 迴圈結束後,內部指標指向末尾
  • 僅能遍歷陣列或實作 Traversable 的物件

for 迴圈替代方案(連續數字索引)

$arr = [18, 20, 25];
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
    echo $arr[$i] . "
"; }

掌握 is_array() 判斷配合遞迴/巢狀 foreach,即可靈活處理任意深度的陣列結構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved