#native_company# #native_desc#
#native_cta#

recursive array dump

By Carl Zulauf
on September 10, 2002

Version: 1.0

Type: Function

Category: Algorithms

License: GNU General Public License

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[0], $vb, $kb, 1) . $vb . dump_array($a[1], $vb, $kb, 1) . ')';
	  } else {
		@$table .= dump_array($a[0], $vb, $kb, 1) . $vb . dump_array($a[1], $vb, $kb, 1) . $kb;
	  }
	}
	return $table;
  } else { // if value is not an array, the value is returned untouched.
    return $x;
  }
}
?>