Fonction table_valeur() et les valeurs null
Eric Lupinacci <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <CAM6W4baqCNgG6ghDAxkiHuqFov2v7wLXVUYfGm=D9s5VNX10FA@mail.gmail.com> |
Hello,
Dans le plugin Rainette, je distingue les données non fournies par le
service météo des données indisponibles pour un certain laps de temps.
Pour ce faire, j'initialise le tableau associatif à null et je remplis les
données configurées comme fournies par le service. De fait, les données non
fournies reste à null et quand je les affiche avec leur unité en appelant
la fonction rainette_afficher_unite() je repère le null et n'affiche rien.
Par contre, quand je repère la chaine vide (indisponible) j'affiche N/D
pour dire que c'est temporairement indisponible.
Tout cela est bien beau mais j'ai un souci avec table_valeur() dans
certains modèles car je fais des affichages du type :
[<li>
<span><:rainette:precipitation|ucfirst:></span><br />
(#VALEUR{heure/#GET{index_heure}/precipitation}|rainette_afficher_unite{precipitation,
-1, #ENV{extras/service}})
</li>
#SET{pluie, oui}]
C'est un cas où l'index [heure][0][precipitation] stocke la valeur null.
Or dans la fonction table_valeur() le code suivant est déroulé, sachant que
la variable $defaut est égale à la chaine vide :
} elseif (is_array($table)) {
$table = isset($table[$k]) ? $table[$k] : $defaut;
}
Mais comme la fonction isset() identifie si une variable est définie ET est
différent de null le résultat fait que $table prend la valeur chaine vide
de défaut et écrase donc ma valeur null.
J'affiche donc N/D et non rien comme prévu dans le modèle.
Ce comportement de table_valeur() est-il voulu ?
Si non, il faudrait distinguer le fait que la variable n'est pas définie et
la variable est null ce qui résoudrait mon problème.
Si oui, je ne vois pas comment m'en sortir simplement sachant que je ne
peux pas connaitre le défaut lors de la compilation du modèle sans entrer
dans une usine à gaz.
Vos avis ?
++
Eric