Fonction récursive PHP.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 24 Avril 2021.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 485
    J'aime reçus:
    28
    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);
                    }
            }
    }
    ?>

     
  2. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 485
    J'aime reçus:
    28
    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.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 485
    J'aime reçus:
    28
    Voilà voilà

    C'était un problème de fichier json mal formatté.

    Excusez-moi.
     
  4. ZImm
    ZImm WRInaute discret
    Inscrit:
    26 Mars 2021
    Messages:
    134
    J'aime reçus:
    17
    Toujours penser à test la conformité d'un fichier (d'une variable), avant le traiter, surtout s'il provient d'une source tiers.
     
Chargement...
Similar Threads - Fonction récursive PHP Forum Date
fonction recursive Développement d'un site Web ou d'une appli mobile 20 Mai 2015
Fonction récursive et indentation des éléments Développement d'un site Web ou d'une appli mobile 28 Septembre 2011
fonctionnement précis outil suppression url search console Débuter en référencement Lundi à 08:45
PHP / CURL : interrogation page tiers ne fonctionne plus Développement d'un site Web ou d'une appli mobile 2 Octobre 2021
ma redirection ne fonctionne pas URL Rewriting et .htaccess 18 Août 2021
url rewriting ne fonctionne pas chez moi URL Rewriting et .htaccess 4 Août 2021
mon code ne fonctionne pas pour masquer les .php URL Rewriting et .htaccess 31 Juillet 2021
htaccess qui fonctionne partout sauf sur 1 seul PC URL Rewriting et .htaccess 28 Juillet 2021
La fonction mail (PHP) ne passe pas ! Demandes d'avis et de conseils sur vos sites 28 Juin 2021
Outil "Désavouer des liens" ne fonctionne plus Netlinking, backlinks, liens et redirections 18 Mai 2021