Hallo,
mein PHP-Skript liefert mir zwar das Ergebnis, das ich erwarte.
sehr schön für Dich.
Bei welchen Ausgangsdaten liefert es Dir welches Ergebnis?
Dennoch fühle ich mich damit unwohl, weil ich nicht genau weiss, was passiert ;(
Ich fühlte mich bei Deinem Code extrem unwohl, weil er nicht die Spur eines Kommentars enthält, weil er globale Variablen enthält und weil ich keine Vorstellung habe, auf welcher konkreten Datenstruktur Deine Funktion operiert.
function flatten_array (&array){
Welchen Grund gibt es für die globale Deklaration hier?
global $my_new_array;
Vermutlich möchtest Du Quell- und Zielarray übergeben,
wobei nur beim Ziel eine Referenz erforderlich ist.
foreach ($array as $key => &$value){
$my_new_array[$key] = $value['something'];
Möchtest Du nicht eher überprüfen, ob es sich bei $value['children'] um
ein Array handelt?
"something" ist ein extrem schlechter Index. Warum verwendest Du sowas?
Was machst Du mit all den anderen Werten? Wirfst Du diese einfach weg?
if ($value['children']) {
flatten_array($value['children']);
}
}
return $my_new_array;
}
function test (){
und warum um alles in der Welt ist hier eine globale Variable?
Ist es zu schwer, diese einfach als Parameter zu übergeben.
global $my_old_array;
return flatten_array($my_old_array);
}
> Wie läuft das ab? 'Wartet' die Funktion test(), bis die Funktion flatten\_array() irgendwann irendwas zurückgibt?
ja sicher. Das ist völlig normal - wie bei jedem Funktionsaufruf. test() weiß nichts von den Interna von flatten\_array() und gibt selbst einfach den Rückgabewert dieser Funktion zurück.
Ich würde den Code nicht so stehen lassen ...
Freundliche Grüße
Vinzenz