讓 Javascript 也有 PHP 的 print_r() 函式
2009/10/21
有了php才有的 print_r() 來瞬間印出整個陣列,這樣子將來開發 JS 時 debug 方便多了。
function print_r (array, return_val) {
// Prints out or returns information about the specified variable
//
// version: 1008.1718
// discuss at: http://phpjs.org/functions/print_r // + original by: Michael White (http://getsprink.com)
// + improved by: Ben Bryan
// + input by: Brett Zamir (http://brett-zamir.me)
// + improved by: Brett Zamir (http://brett-zamir.me)
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // - depends on: echo
// * example 1: print_r(1, true);
// * returns 1: 1
var output = "", pad_char = " ", pad_val = 4, d = this.window.document; var getFuncName = function (fn) {
var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
if (!name) {
return '(Anonymous)';
} return name[1];
};
var repeat_char = function (len, pad_char) {
var str = ""; for (var i=0; i < len; i++) {
str += pad_char;
}
return str;
};
var formatArray = function (obj, cur_depth, pad_val, pad_char) {
if (cur_depth > 0) {
cur_depth++;
}
var base_pad = repeat_char(pad_val*cur_depth, pad_char);
var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
var str = "";
if (typeof obj === 'object' && obj !== null && obj.constructor && getFuncName(obj.constructor) !== 'PHPJS_Resource') {
str += "Array\n" + base_pad + "(\n";
for (var key in obj) {
if (obj[key] instanceof Array) {
str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char); } else {
str += thick_pad + "["+key+"] => " + obj[key] + "\n";
}
}
str += base_pad + ")\n"; } else if (obj === null || obj === undefined) {
str = '';
} else { // for our "resource" class
str = obj.toString();
}
return str;
};
output = formatArray(array, 0, pad_val, pad_char);
if (return_val !== true) {
if (d.body) {
this.echo(output);
} else {
try {
d = XULDocument; // We're in XUL, so appending as plain text won't work; trigger an error out of XUL
this.echo('<pre xmlns="http://www.w3.org/1999/xhtml" style="white-space:pre;">'+output+'</pre>');
} catch (e) {
this.echo(output); // Outputting as plain text may work in some plain XML
}
}
return true; } else {
return output;
}
}
http://kevin.vanzonneveld.net/techblog/category/php2js/
這個網址有一系列 php to js 的函式模擬功能,需要時可以參考看看
很多好用的php函式都可以在JS上模擬出來