eddi: print_r in Java?

Beitrag lesen

Hallo Dave,

ich hatte mal eine Verbesserte Funktion von print_r() in PHP versucht zu schreiben. Vielleicht hilft Dir der Aufbau, um in Java ein Funktion zu erstellen (bitte poste sie hier auch ;).

  
function eddi_r($a,$exit=0,$b="\n")  
 {  
 if(($c=gettype($a))=='array' || $c=='object')  
  {  
  settype($a,'array');  
  
  $b.="  "; $i=0; $j=0; $y=''; $z=array();  
  
  $y.=ucfirst($c).$b.'(';  
  
  foreach($a as $k=>$v)  
   {  
   $z[$i]=array($c=($b."  [".$k."]"),'');  
  
   $j=(($c=strlen($c))>$j) ? $c : $j;  
  
   $z[$i][1]['type']=($c=gettype($v));  
   if($c=='array' || $c=='object')  
    if( array_key_exists($k,$a[$k])  && ($d=array_keys($a[$k]))==array_keys($a[$k][$k]) &&  
     array_key_exists($k,$a[$k][$k])  && $d==array_keys($a[$k][$k][$k])   &&  
     array_key_exists($k,$a[$k][$k][$k]) && $d==array_keys($a[$k][$k][$k][$k])   &&  
     array_key_exists($k,$a[$k][$k][$k][$k]) && $d==array_keys($a[$k][$k][$k][$k][$k])  
     )  
     $z[$i][1]['cont']=$v.' (*RECURSION*)';  
    else $z[$i][1]['cont']=eddi_r($v,0,$b.'  ');  
   else  $z[$i][1]['cont']=$v;  
  
   $i++;  
   }  
  
  for($k=0;$k<$i;$k++)  
   {  
   if($z[$k][1]['type']!='array' && $z[$k][1]['type']!='object')  
    {  
    $x=explode("\n",$z[$k][1]['cont']);  
    $c=count($x);  
    $v=$x[0]."\n";  
  
    for($l=1;$l<($c-1);$l++)  
     $v.=str_pad($x[$l],strlen(str_pad($z[$k][0],$j))+3+strlen($x[$l]),' ',0)."\n";  
  
    $v=trim($v).((array_key_exists($l,$x)) ? $x[$l] : '');  
    }  
   else $v=$z[$k][1]['cont'];  
  
   $y.=str_pad($z[$k][0],$j).' => '.$v;  
   }  
  
  $y.=$b.")";  
  }  
 else $y=$a;  
  
 if($exit>0)  exit("$y\n");  
 elseif($b=="\n  ") echo $y."\n";  
 else   return($y);  
 }  

Gruß aus Berlin!
eddi

--
Achte die Kleinigkeiten, aber liebe das Detail!