PHP’s print_r function in JavaScript
2009 February 25
This function simulates the print_r function in PHP.
Download: Link.
function print_r(obj,pre,child)
{
if(pre === undefined) pre = false;
if(child === undefined) child = 0;
var n = "\n";
var t = " ";
var ts = "";
if(pre) for(var i = 0; i <= child; i++) ts += t;
if(obj.constructor == Array || obj.constructor == Object)
{
if(pre && child == 0)
{
document.write('<pre>'+n);
document.write('Array'+n);
document.write('('+n);
}
else if(pre && child > 0)
{
document.write(ts+'('+n);
}
else
{
document.write('Array (');
}
for(var value in obj)
{
if(obj[value].constructor == Array|| obj[value].constructor == Object)
{
var newChild = child + 1;
if(pre && child == 0)
{
document.write(ts+'['+value+'] => Array'+n);
}
else if(pre && child > 0)
{
document.write(ts+t+'['+value+'] => Array'+n);
newChild++;
}
else
{
document.write(" ["+value+"] => ");
}
print_r(obj[value],pre,newChild);
}
else
{
if(pre && child == 0)
{
document.write(t+'['+value+'] => '+obj[value]+n);
}
else if(pre && child > 0)
{
document.write(ts+t+'['+value+'] => '+obj[value]+n);
}
else
{
document.write(' ['+value+'] => '+obj[value]+' ');
}
}
}
if(pre && child == 0)
{
document.write(') ');
document.write('</pre>');
}
else if(pre && child > 0)
{
document.write(ts+') '+n);
}
else
{
document.write(') ');
}
}
}
Usage:
When you want to nicely format the array with the pre tags, set true after the array parameter in the function.
var array = new Array();
array[0] = 'test0';
array[1] = 'test1';
array[2] = new Array('test2','test3');
array[3] = new Array('test4',new Array('test5','test6'));
array[4] = new Array('test7',new Array('test8',new Array('test9','test10')));
print_r(array);
print_r(array,true);
Output:
Array ( [0] => test0 [1] => test1 [2] => Array ( [0] => test2 [1] => test3 ) [3] ...
Array
(
[0] => test0
[1] => test1
[2] => Array
(
[0] => test2
[1] => test3
)
[3] => Array
(
[0] => test4
[1] => Array
(
[0] => test5
[1] => test6
)
)
[4] => Array
(
[0] => test7
[1] => Array
(
[0] => test8
[1] => Array
(
[0] => test9
[1] => test10
)
)
)
)
Very handy, thank you! One tiny modification I made to make the output easier to sift through was to add, right after line 64, a line-break to follow each array element:
document.write (”);