...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!
> 
> 



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to