Chercher des valeurs dans un tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Chercher des valeurs dans un tableau

Re: Chercher des valeurs dans un tableau

par devlop78 » 22 oct. 2011, 20:03

Je cherche une fonction native

Pour le moment, j'ai enrichi mon aide de vue messager :
    public function addMessages(Array $messages)
    {
        foreach ($messages as $message)
        {
            $args = func_get_args();
            array_splice($args, 0, 1, array($message)); 
            if (is_array($message))
            {
                call_user_func_array(array($this,'addMessages'), $args);
                continue;
            }
            
            call_user_func_array(array($this,'addMessage'), $args);
        }
    }
et j'ai ajouté (encore !) une couche de polymorphisme à la méthode d'appel de l'aide, en la surchargeant :
    public function messager()
    {
        if (func_num_args() == 0) return $this;
        if (is_array(func_get_arg(0))) return call_user_func_array(array($this,'addMessages'), func_get_args());
        else return call_user_func_array(array($this,'addMessage'), func_get_args());
    }
J'avoue que ça donne un bel air de puissance, puisque maintenant :
$this->view->messager($form->getMessages(), 'error');
Les messages sont enregistrés comme il faut, je n'ai plus qu'une ligne. Avec plusieurs modifs comme ça, j'ai réussi à réduire de moitié mon code de mon ActionController par deux, et ma vue d'action par deux, avec pour cette dernière une belle amélioration de logique.

On a des array_sum mais pas certaines fonctions qui sont quand même super utiles ;)

Re: Chercher des valeurs dans un tableau

par xTG » 22 oct. 2011, 19:51

Penches toi sur une fonction de parcours récursive. ;)

Code : Tout sélectionner

Fonction Parcours(Tableau t) POUR TOUT i DANS t FAIRE SI i EST UN Tableau Parcours(i) SINON Afficher i FINSI FINPOUR FIN
;)

Chercher des valeurs dans un tableau

par devlop78 » 22 oct. 2011, 19:20

Bonjour à tous,
$errors = array(
  'a' => array('a'=>'valeur','b'=>'valeur'),
  'b' => array('a'=>'valeur', 'b'=>'valeur')
);
Après étude et recherche, je me pose toujours la même question. Existe-t-il une façon native de faire :
               foreach ($errors as $errorsLevel)
                {
                    foreach($errorsLevel as $error)
                    {
                        $this->view->messager($this->view->escape($error), 'error');
                    }
                }
Je pense que de façon plus générique, une façon native que récupérer toutes les "feuilles" d'un tableau, donc toutes les valeurs non tableau les plus basses, un peu comme récupérer les articles dans un menu avec des menus et sous menus possiblement infinis. Le tout, en une ou deux lignes.

J'ai déjà essayé des Iterator SPL, il y en a un qui marche, mais c'était du hasard (j'ai du mal à les comprendre).

Merci ;)