Fonction récursive PHP.

ortolojf

WRInaute accro
Bonjour

La fonction récursive ci-dessous, sert à parcourir un fichier JSON, pour produire un fichier HTML.

La fonction $callback_out($key, $value) ne semble pas se déclencher à la fin du fichier JSON. Celà nécessiterait d'abord l'appel récursif de traverse($o, $callback_in, $callback_out).

Comme c'est la fin du fichier JSON, l'appel est le premier appel externe, pour lequel il n'y a pas d'appel de $callback_out($key, $value).

Celà fait , que la dernière balise fermante du fichier HTML n'est pas générée.

Comment arranger traverse($o, $callback_in, $callback_out), pour que $callback_out($key, $value) soit lancée après l'appel externe de la fonction traverse() ?

Merci beaucoup.


PHP:
<?php

function traverse($o, $callback_in, $callback_out) {
        global $len;
        foreach($o as $key => $value) {
                $value = $o[$key];
                if (($value !== null) &&
                        ($value !== false) &&
                        ((is_object($value))||
                        (is_array($value)))) {
                        $callback_in($key, $value);
                        traverse($value, $callback_in, $callback_out);
                        $callback_out($key, $value);
                } else {
                        $callback_in($key, $value);
                }
        }
}
?>
 

ortolojf

WRInaute accro
Rebonjour

D'après Github, voici l'algorithme général de fonction récursive non terminale :

Code:
fonction avec retour T recursive(P)
debut
    I0
    si (C) alors
        I1
    sinon
        I2
        recursive(f(P));
        I3
    finsi
fin

M'en vais investiguer.

Amicalement.
 

Discussions similaires

Haut