UNPKG

phpjs

Version:

php.js offers community built php functions in javascript

114 lines (102 loc) 3.3 kB
--- layout: page title: "JavaScript print_r function" comments: true sharing: true footer: true alias: - /functions/view/print_r:493 - /functions/view/print_r - /functions/view/493 - /functions/print_r:493 - /functions/493 --- <!-- Generated by Rakefile:build --> A JavaScript equivalent of PHP's print_r {% codeblock var/print_r.js lang:js https://raw.github.com/kvz/phpjs/master/functions/var/print_r.js raw on github %} function print_r (array, return_val) { // http://kevin.vanzonneveld.net // + 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, getFuncName = function (fn) { var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn); if (!name) { return '(Anonymous)'; } return name[1]; }, repeat_char = function (len, pad_char) { var str = ''; for (var i = 0; i < len; i++) { str += pad_char; } return str; }, 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 (Object.prototype.toString.call(obj[key]) === '[object 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; } return output; } {% endcodeblock %} - [view on github](https://github.com/kvz/phpjs/blob/master/functions/var/print_r.js) - [edit on github](https://github.com/kvz/phpjs/edit/master/functions/var/print_r.js) ### Example 1 This code {% codeblock lang:js example %} print_r(1, true); {% endcodeblock %} Should return {% codeblock lang:js returns %} 1 {% endcodeblock %} ### Other PHP functions in the var extension {% render_partial _includes/custom/var.html %}