IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

switch sur un array dynamique


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 95
    Points : 34
    Points
    34
    Par défaut switch sur un array dynamique
    Bonjour,

    J'aimerais faire un switch sur les valeurs d'un tableau, sachant que celui-ci est dynamique (le tableau est une variable globale et dont les éléments peuvent changer).

    Comment puis-je faire ?

    En quelque sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $myTab = array('foo','bar');
     
    switch($myTab){
         case $var1 : // fonction break;
         case $var2 : // fonction break;
     
    }
    Quelqu'un aurait une piste ?

    Merci d'avance,

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ton switch se fait sur un tableau et non sur une de ses valeurs, j'imagine que c'est pas ce que tu voulais si ?

    Remarque, c'est possible apparement (j'avoue ne jamais avoir essayé, ce n'est pas vraiment un usage qu'on rencontre souvent):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function test (array $arr) {
    	switch ($arr) {
    		case array('a') : echo "Case 1"; break;
    		case array('b') : echo "Case 2"; break;
    		case array('a', 'b') : echo "Case 3"; break;
    	}
    }
     
    test((array)'a');
    test((array)'b');
    test(array('a','b'));
    Bref, si tu veux détecter la présence de valeurs dans un tableau, le mieux n'est pas le switch mais le elseif bien brutal avec in_array:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function test (array $a) {
    	if (in_array('a', $a))
    		echo "Case 1";
    	elseif (in_array('b', $a))
    		echo "Case 2";
    	elseif (in_array('c', $a))
    		echo "Case 3";
    	else
    		echo "Case 4";
    }
     
    test(array('a'));
    test(array('b'));
    test(array('c'));
    test(array('d'));
    Mais généralement, ce sont moins les valeurs que la présence des clés qui nous intéresse. C'est quoi au juste ton besoin ?

    Astuce : si ton objectif est de déclencher une action si un item est présent dans le tableau, tu peux le faire avec une expression booléenne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $haystack = array('foo', 'bar');
    $needle   = "test";
     
    function trigger ($a) { var_dump($a); }
     
    in_array($needle, $haystack) && trigger($haystack); // le trigger ne se déclenche pas car $needle n'est pas dans $haystack
     
    array_push($haystack, 'test');
     
    in_array($needle, $haystack) && trigger($haystack); // le trigger se produit

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/01/2007, 00h37
  2. Réponses: 14
    Dernier message: 13/07/2004, 13h58
  3. [VB.NET] Erreur sur la creation dynamique d'une texbox
    Par headcooper dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/07/2004, 19h34
  4. Article sur les tableaux dynamiques
    Par Eric Sigoillot dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2004, 22h00
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo