2010-03-26 35 views
0

我想寫一個函數,打印多維對象是文本(或整數等)到<span></span>標籤和數組到無序列表。你怎麼寫一個類似print_r()的函數遞歸地打印對象?

如何讓函數遞歸地工作,以便打印所有內容,而不管它在對象中的級別如何?

謝謝!

+0

Duplicate:http://stackoverflow.com/questions/2207599/multidimensional-array-iteration/2207739#2207739 – Gordon 2010-03-26 15:28:18

回答

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

C.

+0

...但你可能想限制你的遞歸,以防你有循環引用。 – symcbean 2010-03-26 15:33:33

+0

完美 - 謝謝! – significance 2010-03-26 16:50:22

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