ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1330
1330
EMPFEHLEN
-
Hallo
Wie kann man einen Array den man einer rekursiven Funktion übergibt wieder ausgeben?
Der Array "$structure" sieht so aus:
Die Funktion die ich mir geschrieben habe sieht so aus:PHP-Code:Array
(
[20] => Array
(
[id] => 20
[name] => Root
[children] => Array
(
[30] => Array
(
[id] => 30
[name] => Primaten
[children] => Array
(
[18] => Array
(
[id] => 18
[name] => Halbaffen
[children] => Array()
)
[42] => Array
(
[id] => 42
[name] => Affen
[children] => Array()
)
)
)
)
)
)
PHP-Code:function rekursiv( $array )
{
foreach( $array as $key => $value )
{
if( is_array($value) )
{
if( count( $value['children'] ) > 0 )
{
rekursiv( $value['children'] );
}
else
{
unset( $value['children'] );
}
}
}
return;
}
rekursiv( $structure );
print_r($structure);
Gedachte hatte ich nun, leere Kinder ("children") zu entfernen und wenn diese nicht leer sind die Funktion noch einmal aufzurufen für die jeweiligen Kinder-Elemente.
Wieso gibt die Funktion $structure unverändert aus? Wo steckt bei dieser rekursiven Funktion der Fehler?
-
04.05.08 13:34 #2
Wenn du eine Variable an eine Funktion übergibst, erstellt diese eine Kopie davon.
Die Lösung für dein Problem ist einfach: Nutze eine Referenz.
PHP-Code:function rekursiv( &$array )
{
foreach( $array as $key => $value )
{
if( is_array($value) )
{
if( count( $value['children'] ) > 0 )
{
rekursiv( $value['children'] );
}
else
{
unset( $value['children'] );
}
}
}
return;
}
rekursiv( $structure );
print_r($structure);
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Leider kommt aber auch dabei das Array unverändert in dem print_r() raus.
-
04.05.08 14:16 #4
Du hast recht...

Habs ein wenig anders gelöst.
PHP-Code:<pre>
<?php
$arr = array('20' => array(
'id' => 20,
'name' => 'Root',
'children' =>
array(
'id' => '30',
'name' => 'Primaten',
'children' => array(
array(
'id' => 18,
'name' => 'Halbaffen',
'children' => array()
),
array(
'id' => 42,
'name' => 'Affen',
'children' => array()
)
)
)
)
);
function rekursiv( $array )
{
foreach( $array as $key => $value )
{
if( is_array($value) )
{
if( count( $value['children'] ) > 0 )
{
rekursiv( $value['children'] );
}
unset( $value['children'] );
}
$arr[] = $value;
}
return $arr;
}
$array = rekursiv( $arr );
print_r($array);
?>KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
In mehreren Foren gleichzeitig dieselbe Frage zu stellen ist eigentlich verpönt. Funktion gibt Array nicht zurück - XHTMLforum
Markus Wulftange
Ähnliche Themen
-
String wird nicht zurückgegeben
Von maxn im Forum PHPAntworten: 6Letzter Beitrag: 25.04.08, 09:31 -
Parameter wird gelöscht bei rekursiver Funktion
Von tantebootsy im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 19.05.06, 11:32 -
url wird von datenbank nicht richtig zurückgegeben.
Von glader im Forum PHPAntworten: 1Letzter Beitrag: 12.04.06, 22:36 -
Arraydaten aus einer Funktion werden nicht zurückgegeben?
Von cameeel im Forum PHPAntworten: 6Letzter Beitrag: 26.12.05, 23:11 -
frunction mit array - array wird nicht zurückgegeben
Von measel101 im Forum PHPAntworten: 2Letzter Beitrag: 19.08.02, 16:37





Zitieren

Login






[PHP] [Codeschnipsel] ImageColor aus HTML-Farbcodierung erstellen