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

PHP 判斷陣列維度的遞迴函數實作

     編輯:PHP 綜合知識

需求

給定任意多維陣列,回傳其最大嵌套深度(維度)。例如:

  • array('a', 'b') → 1
  • array(array(1,2), array(3,4)) → 2
  • array(array(array(1))) → 3

遞迴實作

function arrayLevel($arr) {
    $levels = [0]; // 儲存每個分支深度

    function traverse($arr, &$levels, $level = 0) {
        if (is_array($arr)) {
            $level++;
            $levels[] = $level;
            foreach ($arr as $v) {
                traverse($v, $levels, $level);
            }
        }
    }

    traverse($arr, $levels);
    return max($levels);
}

// 測試
$arr = ['0' => '0'];
echo arrayLevel($arr); // 輸出 1

原理解析

  1. 使用引用傳遞 &$levels 收集所有分支深度。
  2. 遇到陣列即遞增 $level 並遞迴遍歷子元素。
  3. 最終取 max($levels) 即為最大維度。

替代方案(SPL)

function arrayDepth($array) {
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
    $maxDepth = 0;
    foreach ($iterator as $key => $value) {
        $maxDepth = max($maxDepth, $iterator->getDepth() + 1);
    }
    return $maxDepth;
}

SPL 版本更簡潔且效能較好,推薦 PHP 5.1+ 環境使用。

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