Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何编写像print_r()这样的递归打印对象的函数?_Php_Recursion - Fatal编程技术网

Php 如何编写像print_r()这样的递归打印对象的函数?

Php 如何编写像print_r()这样的递归打印对象的函数?,php,recursion,Php,Recursion,我想编写一个函数,将文本(或整数等)多维对象打印到标记中,并将数组打印到无序列表中 如何使函数递归工作,使其打印所有内容,而不考虑它在对象中的级别 谢谢 对象可以被视为数组-尝试使用foreach function dump($obj, $prefix='') { foreach ($obj as $key=>$val) { print "$prefix attribute $key is a " . gettype($val) . "=";

我想编写一个函数,将文本(或整数等)多维对象打印到
标记中,并将数组打印到无序列表中

如何使函数递归工作,使其打印所有内容,而不考虑它在对象中的级别


谢谢

对象可以被视为数组-尝试使用foreach

 function dump($obj, $prefix='')
 {
     foreach ($obj as $key=>$val) {
         print "$prefix attribute $key is a " . gettype($val) . "=";
         switch (gettype($val)) {
            case 'string':
            case 'boolean':
            case 'resource':
            case 'double':
            case 'NULL':
                var_export($val,true) . "\n";
                break;
            case 'object':
                print "(class=" . get_class($val) . ")";
            case 'array':
                print "(";
                dump($val, $prefix . '  ');
                print ")\n";
            default:
                print "????\n";
         }
     }
 }

C.

或更简单,以防递归打印数组的键

function print_tree($array, $level = 0){
    foreach($array as $key => $este){
        echo str_pad($key, strlen($key) + $level, " ", STR_PAD_LEFT) . "\n";
        if (is_array($este))
            print_tree($este, $level+1);
    }
}

Duplicate:…但如果有循环引用,可能需要限制递归。