为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法找出PHP数组的“深度”?

有没有办法找出PHP数组的“深度”?

PHP
森林海 2019-10-29 10:27:10
PHP数组可以为其元素包含数组。这些数组可以具有数组,依此类推。有没有办法找出PHP数组中存在的最大嵌套?一个示例是一个函数,如果初始数组不具有数组作为元素,则返回1;如果至少一个元素是数组,则返回2,依此类推。
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

应该这样做:


<?php


function array_depth(array $array) {

    $max_depth = 1;


    foreach ($array as $value) {

        if (is_array($value)) {

            $depth = array_depth($value) + 1;


            if ($depth > $max_depth) {

                $max_depth = $depth;

            }

        }

    }


    return $max_depth;

}


?>

编辑:非常快速地测试了它,它似乎可以工作。


查看完整回答
反对 回复 2019-10-29
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

这是避免Kent Fredric指出的问题的另一种选择。它为print_r()提供了检查无限递归的功能(它做得很好),并使用输出中的缩进来查找数组的深度。


function array_depth($array) {

    $max_indentation = 1;


    $array_str = print_r($array, true);

    $lines = explode("\n", $array_str);


    foreach ($lines as $line) {

        $indentation = (strlen($line) - strlen(ltrim($line))) / 4;


        if ($indentation > $max_indentation) {

            $max_indentation = $indentation;

        }

    }


    return ceil(($max_indentation - 1) / 2) + 1;

}


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 573 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信