當前位置: 首頁> 最新文章列表> PHP教程:使用array_walk_recursive()函數處理多維數組中的每個元素

PHP教程:使用array_walk_recursive()函數處理多維數組中的每個元素

M66 2025-08-05

PHP中array_walk_recursive()函數簡介

array_walk_recursive()是PHP提供的一個強大函數,能夠遞歸遍歷多維數組中的每個元素,並對其執行指定的回調函數,適合需要對複雜數組結構進行統一處理的場景。

創建示例多維數組

為了演示array_walk_recursive()的使用,我們先定義一個包含學生信息的多維數組,數組中包括姓名、年齡和成績三個字段:

 $students = array(
    array(
        'name' => '張三',
        'age' => 18,
        'scores' => array(80, 85, 90),
    ),
    array(
        'name' => '李四',
        'age' => 19,
        'scores' => array(75, 78, 82),
    ),
    array(
        'name' => '王五',
        'age' => 20,
        'scores' => array(90, 95, 88),
    ),
);

定義回調函數計算平均成績

接下來,編寫一個回調函數,用於檢測鍵名是否為scores ,併計算成績的平均值,隨後將平均成績添加到對應的成績數組中:

 function calculateAverage(&$value, $key)
{
    if ($key === 'scores') {
        $average = array_sum($value) / count($value);
        $value['average'] = $average;
    }
}

應用array_walk_recursive()遍歷數組並執行回調

使用array_walk_recursive()對多維數組進行遍歷,調用上面定義的回調函數對每個元素進行處理:

 <span class="fun">array_walk_recursive($students, &#39;calculateAverage&#39;);</span>

這樣每個學生的成績數組中就會新增一個average鍵,存儲該學生的成績平均分。

驗證結果

通過打印修改後的數組,我們可以直觀地看到平均成績已經被正確添加:

 <span class="fun">print_r($students);</span>

輸出結果示例:

 Array
(
    [0] => Array
        (
            [name] => 張三
            [age] => 18
            [scores] => Array
                (
                    [0] => 80
                    [1] => 85
                    [2] => 90
                    [average] => 85
                )
        )
    [1] => Array
        (
            [name] => 李四
            [age] => 19
            [scores] => Array
                (
                    [0] => 75
                    [1] => 78
                    [2] => 82
                    [average] => 78.33333333333333
                )
        )
    [2] => Array
        (
            [name] => 王五
            [age] => 20
            [scores] => Array
                (
                    [0] => 90
                    [1] => 95
                    [2] => 88
                    [average] => 91
                )
        )
)

總結

本文介紹瞭如何利用PHP的array_walk_recursive()函數對多維數組進行遞歸遍歷,並通過回調函數實現對數組元素的靈活處理。通過此方法,開發者能夠高效地處理嵌套數組中的數據,滿足複雜業務需求。