你如何写一个像print_r()这样递归打印对象的函数?

时间:2010-03-26 15:15:25

标签: php recursion

我想编写一个函数,将多维对象(文本(或整数等))打印成<span></span>标签,将数组打印成无序列表。

如何使函数递归地工作,以便它打印所有内容,无论它在对象中的级别如何?

谢谢!

2 个答案:

答案 0 :(得分:1)

可以将对象视为数组 - 尝试使用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";
         }
     }
 }

下进行。

答案 1 :(得分:1)

或者更简单,以便递归地打印数组的键,

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);
    }
}