Mailinglisten-Archive |
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