da gibts was: array_walk_recursive
Hallo,
mit zeitdruck im Rücken stelle ich mich gerade zu blöd an... Ich bekomme ein array über eine soap-api und will es rekursiv durchlaufen. Am liebsten von oben nach unten, Stamm für Stamm.
(es ist hier vereinfacht aber ganze ist auf diese Weise bis ins endlose verschachtelt)Code:Array ( [category_id] => 1 [parent_id] => 0 [name] => Root Catalog [position] => 1 [level] => 0 [children] => Array ( [0] => Array ( [category_id] => 2 [parent_id] => 0 [name] => Clothing [is_active] => 1 [position] => 1 [level] => 1 [children] => Array ( [0] => Array ( [category_id] => 3 [parent_id] => 0 [name] => Men [is_active] => 1 [position] => 1 [level] => 2 [children] => Array ( [0] => Array ( [category_id] => 6 [parent_id] => 3 [name] => Pants [is_active] => 1 [position] => 1 [level] => 3 [children] => Array () [1] => Array ( [category_id] => 2 [parent_id] => 0 [name] => Clothing [is_active] => 1 [position] => 1 [level] => 1 [children] => Array ( [0] => Array ( [category_id] => 3 [parent_id] => 0 [name] => Men [is_active] => 1 [position] => 1 [level] => 2 [children] => Array ( [0] => Array ( [category_id] => 6 [parent_id] => 3 [name] => Pants [is_active] => 1 [position] => 1 [level] => 3 [children] => Array ()
So gehts auf jeden Fall nicht:
Was mich am meisten verwundert, das Ganze wird endlos durchlaufen. Ich hatte eigentlich eher den Fehler erwartet das nur ein "Stamm" bis zum Ende durchlaufen wird und beim letzten Kind gestopt wird.PHP-Code:function treeCat ($allCategories){
foreach ($allCategories['children'] as $cat) {
// ja, ja... tue irgendwas...
treeCat($cat);
}
}
gruss Volkan
bythewaythewebsuxgoofflineandenjoytheday
da gibts was: array_walk_recursive
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Hallo Volkan,
Du solltest auch prüfen ob es sich beim Wert überhaupt um ein Array handelt, wenn Du es erneut an die Funktion übergibst.
PHP 5 Weg, sofern die entsprechenden SPL Klassen verfügbar sind (was sie standardmäßig sein sollten):
PHP-Code:foreach (new RecursiveArrayIterator( $array ) as $arr)
{
echo "<pre>" .print_r( $arr, true ). "</pre>";
}
PHP 4 Weg mit einer eigenen Funktion:
PHP-Code:function rArray( $array )
{
foreach($array as $schluessel => $wert)
{
if (is_array( $schluessel ))
{
rArray( $schluessel );
}
else
{
echo "<pre>" .print_r( $wert, true ). "</pre>";
}
}
}
// Funktion aufrufen
rArray( $array );
#.Viele Grüße - Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PHP Tutorials und kostenlose Scripts gibt's bei phpBuddy.eu
Follow phpBuddy on Twitter
LTFB - anfängerfreundliche Tutorials
.
Andreas: SPL ist nicht zwingend aktiviert, das kommt IMHO erst in 5.3
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)