Re: Printing an array
| From: | scott furt | Date: | Tue, 19 Mar 2002 10:28:51 +0000 |
| Subject: | Re: Printing an array | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-89087@lists.php.net to get a copy of this message | ||
...because you never shrink $prefix
after output(), try array_pop($prefix);
Alexander Skwar wrote:
Hello!
I'd like to print an array kinda like the way it was created. Ie., I've
got the following array:
$r[0][0]['name'] = 'joe';
$r[0][0]['gender'] = 'male';
$r[0][0]['prop'] = 'prefs';
$r[0][0][0]['text'] = 'mail';
$r[0][0][0]['set'] = 'yes';
$r[0][0][1]['text'] = 'phone';
$r[0][0][1]['set'] = 'no';
Now I'd like to have a function which I'd pass the array and get the
following output:
r[0][0]['name'] = 'joe'
r[0][0]['gender'] = 'male'
r[0][0]['prop'] = 'prefs'
r[0][0][0]['text'] = 'mail'
r[0][0][0]['set'] = 'yes'
r[0][0][1]['text'] = 'phone'
r[0][0][1]['set'] = 'no'
Right now, I've got the following not quite working function:
<?php
function output($array, $name, $prefix = array()){
foreach ($array as $key => $value){
if (! is_array($value)){
if (0 < count($prefix)){
// Prefix vorhanden
printf ("%s%s[%s] = '%s'\n", $name, implode('', $prefix), $key, $value);
} else {
// Kein Prefix angegeben
printf ("%s[%s] = %s\n", $name, $key, $value);
}
} else {
$prefix[] = sprintf('[%s]', $key);
output($value, $name, $prefix);
}
}
}
?>
This produces the following output:
r[0][0][name] = 'joe'
r[0][0][gender] = 'male'
r[0][0][prop] = 'prefs'
r[0][0][0][text] = 'mail'
r[0][0][0][set] = 'yes'
r[0][0][0][1][text] = 'phone'
r[0][0][0][1][set] = 'no'
As you can see in the line with "phone", I've still got an error
somewhere. The "phone" line should be:
r[0][0][1]['text'] = 'phone'
But it is:
r[0][0][0][1]['text'] = 'phone'
The 3rd [0] is too much. This means, that I somehow need to get rid of
the 3rd [0]. It seems like I did not notice that I went "up" again in
the array.
Could somebody please help me in refining the function so that it works?
Thanks a lot!