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