Evaluer une variable de condition

Résolu
remyc42 Messages postés 7 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 29 avril 2008 - 29 avril 2008 à 15:22
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 29 avril 2008 à 23:01
Bonjour,

J'ai besoin dans mon projet de faire une condition dynamique dans un IF.
Ma condition ressemblerait donc au final à :

    if(tab1[$a]['index2a'] == tab2[$b]['index2b'])

La seul chose que j'ai trouvé sur le net qui ne marche pas est d'utiliser la fonction php eval(). Je sais que c'est le 2eme index qui pose probleme mais je ne trouve pas la bonne syntaxe...
comme ceci :

        $a=2;
        $b=3;
        $tab1[$a]['index2a']=5;
        $tab2[$b]['index2b']=5;
        $macondition = "return ( $tab1[$a]['index2a'] != $tab2[$b]['index2b']);";
        if(eval($macondition)){
                echo "egale";
        }
        else{
                echo "pas egale";
        }

Le but final étant de faire une enorme condition grace à une boucle :
       if($_FILES[$fichier]['type'] == $format[1] || $_FILES[$fichier]['type'] == $format[2] || $_FILES[$fichier]['type'] == $format[3])

Merci pour votre aide précieuse
   

7 réponses

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
29 avril 2008 à 17:08
J'avais pas lu la fin ^^

alors moi je ferais comme ça (en gros)
n boucles imbriquées de foreach (n dependant des index a tester)
1 boolean pr verifier que l integrité est tjrs ok
1 if qui verifie l integrité et le boolen
1 else qui sort des n foreach
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
3
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
29 avril 2008 à 15:34
$a=2;
        $b=3;
        $tab1[$a]['index2a']=5;
        $tab2[$b]['index2b']=5;
        if($tab1[$a]['index2a'] == $tab2[$b]['index2b']){
                echo "egale";
        }
        else{
                echo "pas egale";
        }

Pas compris la question ptet...
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
remyc42 Messages postés 7 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 29 avril 2008
29 avril 2008 à 15:46
Effectivement tu n'as pas compris mon problème.
je souhaite que ma condition soit dynamique, que je puisse la modifier comme je veux à l'aide d'un tableau saisit par le developpeur

J'ai vu que eval a pas mal de faille de sécurité, donc la variable $condition n'est accessible que par le developpeur.

Merci pour vos réponses
0
remyc42 Messages postés 7 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 29 avril 2008
29 avril 2008 à 17:56
Merci pour ta solution. C'est accepté !!!
Je m'étais un peu compliquer la tache avec ma méthode eval()

Bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 avril 2008 à 19:36
Hello,

heureusement que vous vous êtes apparemment compris, parce que moi, je n'ai rien compris.
Mais j'ai des doutes...je ne comprends pas pourquoi tu ne peux pas utiliser une fonction qui prend un nombre variable de paramètres et les teste entre eux comme tu le souhaites, puis renvoie un booléen que tu testes dans un seul petit if(true === maFonction($aArg1, $aArg2, ...etc)) ?
Il y a aussi create_function() qui permet de créer des fonctions dynamiques, le cas échéant.
Mais les boucles imbriquées de Teclis, j'ai tendance à m'en méfier... ;-)
0
remyc42 Messages postés 7 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 29 avril 2008
29 avril 2008 à 20:24
Je vous présente ce que j'ai fait qui fonctionne.
Si vous avez des questions
Il faut qu'un élément soit au moins égal à un des éléments du tableau

// determiner le nombre d'éléments du tableau
$nbElement = sizeof($tab2);
    $bool = 0;
    for($i=0;$i<$nbElement;$i++){
       // Test de la mini condition
        if(tab1['type'] == $tab2[$i]){
            $bool=true;
            break;
        }
        else{
            $bool=false;
        }
    }
    if($bool==false){
        $total = false;
    }
    else{
        $total = true;
    }
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 avril 2008 à 23:01
Heu...et
if(in_array($tab1['type'], $tab2)) ?
0
Rejoignez-nous