» Javascript equivalent for PHP's print_r
399 PHP equivalents
- PHP.JS Licensing
- PHP.JS SVN
- PHP.JS Namespaced
- abs
- acosh
- acos
- addslashes
- aggregate
- aggregate_info
- aggregate_methods
- aggregate_methods_by_list
- aggregate_methods_by_regexp
- aggregate_properties
- aggregate_properties_by_list
- aggregate_properties_by_regexp
- aggregation_info
- array
- array_change_key_case
- array_chunk
- array_combine
- array_count_values
- array_diff
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_fill
- array_fill_keys
- array_filter
- array_flip
- array_intersect
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_keys
- array_key_exists
- array_map
- array_merge
- array_merge_recursive
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff
- array_udiff_assoc
- array_udiff_uassoc
- array_uintersect
- array_uintersect_assoc
- array_uintersect_uassoc
- array_unique
- array_unshift
- array_values
- array_walk
- array_walk_recursive
- arsort
- asinh
- asin
- asort
- assert
- assert_options
- atan2
- atanh
- atan
- base64_decode
- base64_encode
- basename
- base_convert
- bin2hex
- bindec
- call_user_func
- call_user_func_array
- ceil
- checkdate
- chop
- chr
- chunk_split
- classkit_import
- classkit_method_add
- classkit_method_copy
- classkit_method_redefine
- classkit_method_remove
- classkit_method_rename
- class_exists
- compact
- constant
- convert_uuencode
- cosh
- cos
- count
- count_chars
- crc32
- create_function
- ctype_alnum
- ctype_alpha
- ctype_cntrl
- ctype_digit
- ctype_graph
- ctype_lower
- ctype_print
- ctype_punct
- ctype_space
- ctype_upper
- ctype_xdigit
- current
- date
- date_default_timezone_get
- date_default_timezone_set
- date_parse
- deaggregate
- decbin
- dechex
- decoct
- defined
- define
- deg2rad
- die
- dirname
- doubleval
- each
- echo
- empty
- end
- exit
- explode
- expm1
- exp
- extract
- fclose
- feof
- fgetcsv
- fgetc
- fgetss
- fgets
- filemtime
- filesize
- file
- file_exists
- file_get_contents
- floatval
- floor
- fmod
- fopen
- fpassthru
- fread
- fseek
- ftell
- function_exists
- func_get_args
- func_get_arg
- func_num_args
- getdate
- getenv
- getlastmod
- getrandmax
- gettimeofday
- gettype
- get_cfg_var
- get_class
- get_class_methods
- get_class_vars
- get_declared_classes
- get_defined_constants
- get_defined_functions
- get_defined_vars
- get_headers
- get_html_translation_table
- get_included_files
- get_meta_tags
- get_object_vars
- get_required_files
- get_resource_type
- gmdate
- gmmktime
- gmstrftime
- gopher_parsedir
- hexdec
- htmlentities
- htmlspecialchars
- htmlspecialchars_decode
- html_entity_decode
- http_build_query
- hypot
- idate
- implode
- import_request_variables
- include
- include_once
- ini_alter
- ini_get
- ini_get_all
- ini_restore
- ini_set
- intval
- in_array
- ip2long
- isset
- is_array
- is_binary
- is_bool
- is_buffer
- is_callable
- is_double
- is_finite
- is_float
- is_infinite
- is_integer
- is_int
- is_long
- is_nan
- is_null
- is_numeric
- is_object
- is_real
- is_resource
- is_scalar
- is_string
- is_unicode
- join
- json_decode
- json_encode
- key
- krsort
- ksort
- lcfirst
- lcg_value
- levenshtein
- localeconv
- localtime
- log10
- log1p
- log
- long2ip
- ltrim
- max
- md5
- md5_file
- method_exists
- microtime
- min
- mktime
- mt_getrandmax
- mt_rand
- natcasesort
- natsort
- next
- nl2br
- nl_langinfo
- number_format
- octdec
- ord
- parse_str
- parse_url
- pathinfo
- pclose
- phpversion
- php_ini_loaded_file
- php_ini_scanned_files
- php_strip_whitespace
- pi
- popen
- pos
- pow
- preg_grep
- preg_quote
- prev
- printf
- » print_r
- property_exists
- putenv
- quoted_printable_decode
- quoted_printable_encode
- quotemeta
- rad2deg
- rand
- range
- rawurldecode
- rawurlencode
- readfile
- realpath
- register_shutdown_function
- require
- require_once
- reset
- restore_exception_handler
- rewind
- round
- rsort
- rtrim
- runkit_class_adopt
- runkit_class_emancipate
- runkit_function_add
- runkit_function_copy
- runkit_function_redefine
- runkit_function_remove
- runkit_function_rename
- runkit_import
- runkit_method_add
- runkit_method_copy
- runkit_method_redefine
- runkit_method_remove
- runkit_method_rename
- runkit_superglobals
- serialize
- setcookie
- setlocale
- setrawcookie
- settype
- set_exception_handler
- set_time_limit
- sha1
- sha1_file
- shuffle
- sinh
- sin
- sizeof
- sleep
- sort
- soundex
- split
- sprintf
- sql_regcase
- sqrt
- strcasecmp
- strchr
- strcmp
- strcoll
- strcspn
- strftime
- stripos
- stripslashes
- strip_tags
- stristr
- strlen
- strnatcasecmp
- strnatcmp
- strncasecmp
- strncmp
- strpbrk
- strpos
- strrchr
- strrev
- strripos
- strrpos
- strspn
- strstr
- strtok
- strtolower
- strtotime
- strtoupper
- strtr
- strval
- str_getcsv
- str_ireplace
- str_pad
- str_repeat
- str_replace
- str_rot13
- str_shuffle
- str_split
- str_word_count
- substr
- substr_compare
- substr_count
- substr_replace
- tanh
- tan
- timezone_abbreviations_list
- timezone_identifiers_list
- time
- time_nanosleep
- time_sleep_until
- trim
- uasort
- ucfirst
- ucwords
- uksort
- uniqid
- unserialize
- urldecode
- urlencode
- usleep
- usort
- utf8_decode
- utf8_encode
- var_dump
- var_export
- vprintf
- vsprintf
- wordwrap
PHP to Javascript Project: php.js
This article is part of the 'Porting PHP to Javascript' Project, which aims to decrease the gap between developing for PHP & Javascript.
A lot of people are familiar with PHP's functions, and though Javascript functions are often quite similar, some functions may be missing or addressed differently. The Javascript implementations should be as compliant with the PHP versions as possible, a good indication is that the PHP function manual could also apply to the Javascript version.
Porting crucial PHP functions to Javascript can be fun & useful. Currently some PHP functions have been added, but readers are encouraged to contribute and improve functions by adding comments. Eventually the goal is to save all the functions in one php.js file and make it publicly available for your coding pleasure.
If you choose to contribute, let me know how you want to be credited in the function's comments. You may also want to subscribe to RSS so you receive updates whenever new functions are posted.
This is a Javascript version of the PHP function: print_r.
I have moved out PHP.JS to it's own site. For info & reactions on comments please goto phpjs.org
PHP print_r
Description
print_r - Prints human-readable information about a variable
mixed print_r( mixed expression [, bool return] )
print_r() displays information about a variable in a way that's readable by humans.
Parameters
-
expression
The expression to be printed.
-
return
If you would like to capture the output of print_r(), use the return parameter. If this parameter is set to TRUE, print_r() will return its output, instead of printing it (which it does by default).
Return Values
If given a string, integer or float, the value itself will be printed. If given an array, values will be presented in a format that shows keys and elements. Similar notation is used for objects.
See Also
Javascript print_r
Source
This is the main source of the Javascript version of PHP's print_r
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; 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; } }
To run the Javascript print_r, you will also need the following dependencies:
Examples
Currently there is 1 example
Example 1
print_r(1, true);And that would return
1More about this Project
Download php.js
To easily include it in your code, every function currently available is stored in
Normal
- uncompressed source: php.js
- minified: php.min.js [recommended]
- compressed: php.packed.js
Namespaced What is 'namespaced?'
- uncompressed source: php.namespaced.js
- minified: php.namespaced.min.js
- compressed: php.namespaced.packed.js
To download use Right click, Save Link As
Generally the best way is to use a minified version and gzip it
Credits
Respect & awards go to everybody who has contributed in some way so far:
Your name here?
Contributing is as easy as adding a comment with better code, or code for a new function.
Any contribution leading to improvement will directly get your name & link here.
Coming Project features
Project features that we are currently working on:
- Done - Site. A place for php.js of it's own. See: phpjs.org.
- Done - Compile. Compile your own php.js version, with only the functions you need. Should generate a hash with which you can retrieve latest versions of your php.js combination. Done - Testsuite. A better test-suite that can be ran locally so developers can easily test before commiting. Also the testing itself should be more thorough.
- Done - Versioning. Individual functions are versioned, but the entire library should be versioned as well.
Stay up to date
You can track my blog
articles and
comments. You may also find my
bookmarks interesting. Or
Follow me on Twitter
Like this article?
|
Then Dzone it! Or use another bookmark button below to show your support & help me spread the word. |
RelatedArticles like this one» PHP.JS Licensing |
tags: programming, php, javascript, phpjs
category: Programming - Javascript - PHP equivalents
read: 12,858 times
Add Comment
PHP.JS is outgroing this blog and moving to it's own space. Please leave your comment here: http://phpjs.org/functions/print_r










tagcloud

#27. Brett Zamir on 03 February 2009
#26. Dennis Day on 03 February 2009
#25. Kevin on 31 December 2008
#24. alexandre on 31 December 2008
PS: Sorry about my awful English... I'm Brazillian
#23. Kevin on 01 December 2008
#22. nikdo on 28 November 2008
#21. Alexander on 19 November 2008
Change to:
therefor print a nested objects
#20. Kevin on 06 October 2008
#19. Tomot on 03 October 2008
in FF3 works fine.
#18. Kevin on 29 September 2008
#17. Francois on 25 September 2008
it is:
= string.replace(/>/g '>');
... [more] but we should read:
= string.replace(/>/g, '>');
#16. Kevin on 27 August 2008
The object vs array story is because PHP does not differentiate between numerically indexed arrays and 'associative arrays'. But as soon as JavaScript encounters an associative array, it becomes an 'Object'. This is an essential difference between JS & PHP. In this project we've chosen to side with PHP.
Hopefully this answers your question. As for the BR tag, if I output PHP's print_r I can choose to enclose it between PRE tags. I would like JS scripters to be able to approach JS's print_r in the same manner.
#15. aron budinszky on 07 August 2008
#14. aron budinszky on 07 August 2008
if (obj[key] instanceof Array || obj[key] instanceof Object)
is omitted from the current version in php.js, even though it is included in ben bryan's posted version...
#13. aron budinszky on 07 August 2008
#12. Alejandro on 04 June 2008
#11. Kevin on 31 May 2008
#10. vinnieboombots on 26 May 2008
it replaced the page contents with a comma separated value string of the array's values.
ie: http://kevin.vanzonneveld.net/techblog,http://kevin.vanzonneveld.net/techblog,http://kevin.vanzonneveld.net/techblog,http://kevin.vanzonneveld.net/techblog,http://kevin.vanzonneveld.net/techblog,http://kevin.vanzonneveld.net/techblog
Php's print_r output is different (& better)
... [more]
array
[0]=>http://kevin.vanzonneveld.net/techblog
[1]=>http://kevin.vanzonneveld.net/links
[2]=>http://kevin.vanzonneveld.net/code
[3]=>http://kevin.vanzonneveld.net/about
#9. Kevin on 20 May 2008
#8. Ben Bryan on 20 May 2008
#7. Kevin on 08 May 2008
#6. Günter Kits on 08 May 2008
should be
#5. Kevin on 15 March 2008
#4. Michael White on 11 March 2008
So far this bug only seems to affect Netscape and the version I am using is 7.2
Replace this segment:
with this segment:
Netscape thinks that "char" is a reserved word and so cannot be used as a variable name. It errors out saying something about a formal parameter. Changing the 'char" variable to "pad_char" solves that quite easily.
http://crestidg.com
#3. ricardo avalos on 11 March 2008
Very, very, very thanks you!!!
... [more] All my cordial greetings and appreciation from Chile
Ricardo
avalos.ricardo@gmail.com
#2. Kevin on 04 March 2008
#1. Alfonso Jiménez on 04 March 2008
Usage example:
Regards!
Alfonso Jiménez (http://www.alfonsojimenez.com)