# recursive array dump

By Carl Zulauf
on September 10, 2002

Version: 1.0

Type: Function

Category: Algorithms

Description: have you ever wanted to quickly see the contents of an array? This function dumps an array into a string recursively using key:value pairs. All values are tested to see if they are an array, and if so, are split into key:value pairs recursively until everything is a string. The key:value seperators, and key:key seperators are configurable through the function call (you don’t have to change any variables).

```<?php
// sytax: string dump_array(mixed \$value [, string \$value_boundary [, string \$key_boundary [, int \$r_flag]]])
// dumps the array into "key : value" pairs recursively:
// argument 1 is required, and can be any variable type... but if its an array, it will be dumped recursively.
// argument 2 is optional and is a string. This string is the boundary between values. the default is " : "
// argument 3 is optional and is a string. This string is the boundary between the keys. The default is "<br>";
// argument 4 is optional and is a number. 1 means that the function call is a recursive one, and not the original.
// argument 4 is for internal function use only and should not be set in the original function call from the script.
function dump_array (\$x) {
if (gettype(\$x) == "array") { // if value is an array...
// then the value is split into key:value pairs, which are each sent back through the function
// to make sure they are not arrays themseles... and if they are, they are split again, and again, and again, etc...
\$vb = ' : ';  // default boundary that seperates values from each other and their key.
\$kb = '<br>'; // default boundary that seperates keys.
if (func_num_args() > 1) { // if arg 2 is set...
\$vb = func_get_arg(1);  // the value replaces the default value boundary.
if (func_num_args() > 2) { // if arg 3 is set...
\$kb = func_get_arg(2); // the value replaces the default key boundary.
}
}
/*if (func_num_args() > 3 && func_get_arg(3) == 1) { // if the function call is a recursive one...
\$kb = \$vb; // the key boundary is removed, since the key is really just a value for another key.
}*/
while (\$a = each(\$x)) { // walks through the key:value pairs for each key in the current array.
// a string containing all the key:value pairs is generated:
// - both the key and the value are sent back through the function to ensure they are not arrays.
if (func_num_args() > 3 && func_get_arg(3) == 1) {
@\$table .= '(' . dump_array(\$a, \$vb, \$kb, 1) . \$vb . dump_array(\$a, \$vb, \$kb, 1) . ')';
} else {
@\$table .= dump_array(\$a, \$vb, \$kb, 1) . \$vb . dump_array(\$a, \$vb, \$kb, 1) . \$kb;
}
}
return \$table;
} else { // if value is not an array, the value is returned untouched.
return \$x;
}
}
?>```
﻿