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 402
    J'aime reçus:
    26
    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 402
    J'aime reçus:
    26
    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 402
    J'aime reçus:
    26
    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
htaccess qui fonctionne partout sauf sur 1 seul PC URL Rewriting et .htaccess Mercredi à 15:43
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
Annonces thématiques non fonctionnelles AdSense 6 Avril 2021
Récapitulatif Les CMP (Consent Management Platform) : intérêt, fonctionnement... Administration d'un site Web 30 Mars 2021
Activation suivi e-commerce et fonctionnement côté GA Google Analytics 15 Mars 2021
Problème de fonctions synchrone/asynchrone Développement d'un site Web ou d'une appli mobile 24 Janvier 2021
Redirection non fonctionnelle URL Rewriting et .htaccess 18 Septembre 2020