phpbar.de logo

Mailinglisten-Archive

[php] Array ausgeben, wie es angelegt wurde

[php] Array ausgeben, wie es angelegt wurde

Alexander Skwar php_(at)_phpcenter.de
Mon, 18 Mar 2002 19:28:34 +0100


Hallo!

Ich würde gerne ein Array genau so ausgeben, wie man es angelegt hatte.
Dh., ich habe folgendes Array:

$a[0][0]['name'] = 'blah';
$a[0][0]['wert'] = 'blubb';

$a[0][0][0]['text'] = 'du';
$a[0][0][0]['inhalt'] = 'keiner';

$a[0][0][1]['text'] = 'du';
$a[0][0][1]['inhalt'] = 'doch was';

Nun würde ich gerne eine Funktion schreiben, die mir das Array so in der
Form oben wieder ausgibt.  Das Array ist beliebig dimensioniert, und
numerische und textuelle Indices wechseln sich ab; es ist also ein
assoziatives Array.

Fast funktionieren tut dies:

<?php
function ausgeben($array, $prefix = NULL){
        $return = ($prefix === NULL)?(''):($prefix);
        if (is_array($array)){
                foreach ($array as $key => $value){
                        $return .= sprintf('[%s]', $key);
                        if (! is_array($value)){
                                $return .= ausgeben($value, $return);
                        } else {
                                $return .= ausgeben($value);
                        }
                }
        } else {
                $return .= sprintf(" = '%s'\n", $array);
        }
        return $return;
}
echo nl2br(ausgeben($a, 'a'));
?>

Dies erzeugt folgende Ausgabe:

a[0][0][name][name] = 'blah'
[wert][name][name] = 'blah'
[wert] = 'blubb'
[0][text][text] = 'du'
[inhalt][text][text] = 'du'
[inhalt] = 'keiner'
[1][text][text] = 'du'
[inhalt][text][text] = 'du'
[inhalt] = 'doch was'

Nun ja, "fast"...  Wenn ich beim rekursiven Aufruf immer nur
ausgabe($value); angebe, erhalte ich dies:

a[0][0][name] = 'blah'
[wert] = 'blubb'
[0][text] = 'du'
[inhalt] = 'keiner'
[1][text] = 'du'
[inhalt] = 'doch was'

Irgendwie müsste ich wohl noch in Zeile 2 das 'a[0][0]' aus Zeile 1
erhalten.

Auch wenn ich vor dem rekursiven Aufruf das "if (!" zu "if ( is_array"
abändere (also die Bedingung wann $return durchgereicht wird umkehre),
erhalte ich nichts sinnvolles; genauer gesagt kommt dann raus:

a[0]a[0][0]a[0][0][name] = 'blah'
[wert] = 'blubb'
[0]a[0][0][name] = 'blah'
[wert] = 'blubb'
[0][text] = 'du'
[inhalt] = 'keiner'
[1]a[0][0][name] = 'blah'
[wert] = 'blubb'
[0]a[0][0][name] = 'blah'
[wert] = 'blubb'
[0][text] = 'du'
[inhalt] = 'keiner'
[1][text] = 'du'
[inhalt] = 'doch was'

Könnte mir bitte jemand helfen?

Danke!

Alexander Skwar
--
How to quote:	http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:	http://www.iso-top.de      |     Jabber: askwar_(at)_charente.de
   iso-top.de - Die günstige Art an Linux Distributionen zu kommen
                       Uptime: 1 day 7 hours 10 minutes


php::bar PHP Wiki   -   Listenarchive