-/**
- * Filtre ajoutant une valeur à la fin d'une liste, possiblement dans une clé d'un tableau (comme table_valeur()).
- *
- * Attention, cette fonction est bien un "push", c'est-à-dire qu'elle ajoute un élément à la fin d'une liste.
- *
- * #TABLEAU|push_table_valeur{a/b/c, valeur, #CONDITION}
- * - si la clé "c" est une liste : on ajoute "valeur" à la fin
- * - si la clé "c" n'existe pas : on crée une liste et on met la première valeur dedans
- * - si la clé "c" est un scalaire : on ne fait rien
- * - si les clés autres que la dernière n'existent pas : on en fait des tableaux en cascade
- *
- * @see table_valeur
- * @filtre
- * @param array|object|string $table
- * Table ou objet dont on veut modifier ou augmenter une des clés/propriétés. Peut être une chaîne à désérialiser contenant ce tableau ou cet objet.
- * @param string $chemin
- * Une suite de clés ou de propriétés d'objet, séparées par le caractère "/" : un/element/ici
- * @param mixed $valeur
- * Une valeur à ajouter au paramètre précédent.
- * @param mixed $condition=true
- * Une valeur quelconque qui sera testée de manière booléenne pour savoir si on fait le traitement ou pas.
- * Cela allège l'écriture si l'ajout de valeur ne doit se faire que sous condition, notamment que s'il y a une valeur à ajouter.
- * @param string $cle_finale
- * Une clé dans laquelle placer la valeur si précisée
- * @return array|object
- * Retourne le tableau ou l'objet initial, modifié suivant les paramètres.
- */
-function push_table_valeur($table, $chemin, $valeur, $condition = true, $cle_finale = false) {
- // Si la condition est fausse, on ne fait rien du tout
- if ($condition) {
- $table = is_string($table) ? @unserialize($table) : $table;
- $element_a_modifier =& $table;
-
- // S'il y a un emplacement donné, on cherche si c'est un tableau
- if ($chemin and is_string($chemin) and $chemin = explode('/', $chemin) and is_array($chemin)) {
- $i = 0;
- foreach ($chemin as $cle) {
- $i += 1;
- // On ne fait que s'il la clé vaut quelque chose
- if ($cle !== '') {
- // Si c'est un tableau, on vérifie si la clé existe
- if (is_array($element_a_modifier)) {
- // Si la clé n'existe pas : on met un tableau vide qui se remplira
- if (!isset($element_a_modifier[$cle])) {
- $element_a_modifier[$cle] = array();
+ /**
+ * Filtre ajoutant une valeur à la fin d'une liste, possiblement dans une clé d'un tableau (comme table_valeur()).
+ *
+ * Attention, cette fonction est bien un "push", c'est-à-dire qu'elle ajoute un élément à la fin d'une liste.
+ *
+ * `#TABLEAU|push_table_valeur{a/b/c, valeur, #CONDITION}`
+ * - si la clé "c" est une liste : on ajoute "valeur" à la fin
+ * - si la clé "c" n'existe pas : on crée une liste et on met la première valeur dedans
+ * - si la clé "c" est un scalaire : on ne fait rien
+ * - si les clés autres que la dernière n'existent pas : on en fait des tableaux en cascade
+ *
+ * @see table_valeur
+ * @filtre
+ *
+ * @param array|object|string $table
+ * Table ou objet dont on veut modifier ou augmenter une des clés/propriétés. Peut être une chaîne à désérialiser contenant ce tableau ou cet objet.
+ * @param string $chemin
+ * Une suite de clés ou de propriétés d'objet, séparées par le caractère "/" : un/element/ici
+ * @param mixed $valeur
+ * Une valeur à ajouter au paramètre précédent.
+ * @param mixed $condition =true
+ * Une valeur quelconque qui sera testée de manière booléenne pour savoir si on fait le traitement ou pas.
+ * Cela allège l'écriture si l'ajout de valeur ne doit se faire que sous condition, notamment que s'il y a une valeur à ajouter.
+ * @param string $cle_finale
+ * Une clé dans laquelle placer la valeur si précisée
+ *
+ * @return array|object
+ * Retourne le tableau ou l'objet initial, modifié suivant les paramètres.
+ */
+ function push_table_valeur($table, $chemin, $valeur, $condition = true, $cle_finale = false) {
+ // Si la condition est fausse, on ne fait rien du tout
+ if ($condition) {
+ $table = is_string($table) ? @unserialize($table) : $table;
+ $element_a_modifier =& $table;
+
+ // S'il y a un emplacement donné, on cherche si c'est un tableau
+ if ($chemin and is_string($chemin) and $chemin = explode('/', $chemin) and is_array($chemin)) {
+ $i = 0;
+ foreach ($chemin as $cle) {
+ $i += 1;
+ // On ne fait que s'il la clé vaut quelque chose
+ if ($cle !== '') {
+ // Si c'est un tableau, on vérifie si la clé existe
+ if (is_array($element_a_modifier)) {
+ // Si la clé n'existe pas : on met un tableau vide qui se remplira
+ if (!isset($element_a_modifier[$cle])) {
+ $element_a_modifier[$cle] = array();
+ }
+ $element_a_modifier =& $element_a_modifier[$cle];
+ } elseif (is_object($element_a_modifier)) {
+ // Si c'est un objet on vérifie si la propriété existe
+ // Si la propriété n'existe pas : on met un tableau vide qui se remplira
+ if (!isset($element_a_modifier->$cle)) {
+ $element_a_modifier->$cle = array();
+ }
+ $element_a_modifier =& $element_a_modifier->$cle;