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.
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);
}
}
}
?>