[php] vraagje over recursieve functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de volgende functie geschreven om een string te bouwen die de post-waardes op een dusdanige manier bevat, dat ik het naar een file weg kan schrijven en dan later zou kunnen includen als een php bestand)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function build_output($array,$k)
{
    GLOBAL $string;
    foreach ($array AS $key => $value)
    {
        if (is_array($value))
        {
            if ($k)
                $key = "".$k."['".$key."']";
            build_output($value,$key);
        }
        else
        {
            if ($k)
                $string .= "$".$k."['".$key."'] = \"".$value."\";\n";
            else
                $string .= "$".$key." = \"".$value."\";\n";
        }
    }
    return $string;
}


Maar, ik lees vaak dat het gebruiken van GLOBAL lelijk is etc. etc. en dat je dat niet zou moeten gebruiken, maar hoe los je dit dan op?

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 18:05
De helft van de juiste oplossing heb je zelf al geschreven: je functie zelf de string laten retourneren! Je kunt dan de volgende code schrijven:

PHP:
1
2
3
4
5
6
7
8
function voorbeeld()
{
    $string = "";
    $string .= "blaat";
    $string .= voorbeeld(); // recursieve aanroep
    $string .= "blaat";
    return $string;
}


Uiteraard is dit geen volledig werkend voorbeeld (de recursie eindigt nooit) maar je krijgt het idee. Ik zou zeggen, probeer je eigen code zo om te bouwen (daarvoor hoef je maar een enkele regel te wijzigen!) en je hebt een prachtige, veilige, nette functie geschreven.

Wat betreft het doel van je functie: die lijkt me nogal dubbelop. Ken je de serialize funtie al? Die doet waarschijnlijk precies wat je wilt. Dat is natuurlijk geen reden om een kans op netjes leren programmeren te laten schieten. ;)

[ Voor 46% gewijzigd door Soultaker op 04-02-2003 20:08 ]