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!
Achte die Kleinigkeiten, aber liebe das Detail!