Evaluer une variable de condition [Résolu]

Signaler
Messages postés
7
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 avril 2008
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
$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
Messages postés
7
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 avril 2008

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
Messages postés
7
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 avril 2008

Merci pour ta solution. C'est accepté !!!
Je m'étais un peu compliquer la tache avec ma méthode eval()

Bonne soirée
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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... ;-)
Messages postés
7
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
29 avril 2008

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;
    }
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Heu...et
if(in_array($tab1['type'], $tab2)) ?