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 :

Utiliser une variable comme condition ?


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut Utiliser une variable comme condition ?
    Bonjour à tous, je souhaiterai savoir si il est possible d'utiliser une variable comme condition ?

    Je ne trouve rien la dessus et je me demande si c'est possible si oui sous quel syntaxe ?


    vous trouverez si-dessous un essai que j'ai tenté mais cela ne fonctionne pas du tout

    Merci par avance pour votre coup de pouce


    10 est [>] par rapport a 9

    10 est [>] par rapport a 10

    10 est [>] par rapport a 8

    10 est [>] par rapport a 9

    10 est [<] par rapport a 9

    10 est [<] par rapport a 10

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    $signes_comparaisons = array(
        ">",
        "<",
    	"==",
    	"!="
    );
     
    $nouveaux_prix  = array(
    	"10",
    	"11",
    	"9",
    	"10"
    );
     
    $ancien_prix  = array(
    	"9",
    	"10",
    	"8",
    	"9"
    );
     
     
    	foreach($nouveaux_prix as $Nprix) {
    		foreach($signes_comparaisons as $Scomparaison) {
    			foreach($ancien_prix as $Aprix){
    				if($Nprix .$Scomparaison. $Aprix){
    						echo "<p>".$Nprix." est [".$Scomparaison."] par rapport a ".$Aprix."</p>";
    				}
    			}
    		}		
    	}

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu dois remplacer simplement ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($Nprix .$Scomparaison. $Aprix){
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (eval('return ('.$Nprix .$Scomparaison.$Aprix.');')) {
    pour que cela fonctionne.

    Note : qu'utiliser eval() n'est vraiment pas conseillé du tout.
    Bon si ça limite qu'à ça, ça peut encore passer.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Le return dans eval() est-il vraiment nécessaire ?

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Oui, il l'est.
    Pour t'en convaincre, essaye sans et tu verras que quelque soit le résultat du test de comparaison, tu récupéreras un chouette null

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Ah d'accord, merci pour la précision.

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Mais pourquoi ne pas faire une petite fonction ?
    Autre chose lekno, pour la clarté de ton titre, c'est ton opérateur que tu veux transformer en variable.
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    function compare($n1,$n2){
    	if(is_numeric($n1) && is_numeric($n2)){
    		if($n1==$n2){
    			return "$n1=$n2";
    		}
    		elseif($n1>$n2){
    			return "$n1>$n2";
    		}
    		else{
    			return "$n1<$n2";
    		}
    	}
    	else{
    		return 'Il faut que les deux éléments comparés soient numériques !';
    	}
    }
     
    $nouveaux_prix  = array(10,11,9,10);
     
    $ancien_prix  = array(9,10,8,9);
     
    if(sizeof($nouveaux_prix)==sizeof($ancien_prix)){
    	foreach($nouveaux_prix as $Nprix) {
    		foreach($ancien_prix as $Aprix){
    			echo compare($Nprix,$Aprix).'<br>';
    		}			
    	}
    }
    else{
    	echo 'Les deux tableaux doivent faire la même taille !';
    }
     
    //ceci dit, tu es sûr de vouloir faire deux boucles imbriquées (distribution de toutes les combinaisons) ?
    //Tu ne voudrais pas plutôt comparer tes deux tableaux  d'indice à indice ?
    $nouveaux_prix  = array(10,11,9,10);
     
    $ancien_prix  = array(9,10,8,9);
     
    if(sizeof($nouveaux_prix)==sizeof($ancien_prix)){
    	for($i=0;$i<sizeof($nouveaux_prix);$i++){
    		echo compare($nouveaux_prix[$i],$ancien_prix[$i]).'<br>';				
    	}
    }
    else{
    	echo 'Les deux tableaux doivent faire la même taille !';
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Dans le style délire (en 3 lignes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $new = array('10', '11', '9', '10');
    $old = array('9', '10', '8', '9');
    array_map(function($x) use ($old) { array_map(function($y) use ($x) { echo "<p>{$x} est [".(($x == $y) ? '=' : (($x < $y) ? '<' : '>'))."] par rapport à {$y}</p>"; }, $old);}, $new);

  8. #8
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Dans le code d'exemple je souhaite comparer toute les valeurs du tableau nouveau prix au tableau ancien prix pour chaque signe de comparaison du tableau, voila pourquoi j'avais opté pour la triple boucle foreach

    Je peux ainsi traiter TOUT les cas de figure possible

    Merci à tous pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser une variable comme paramètre de l'objet range
    Par stdebordeau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/10/2007, 14h56
  2. javascript : utiliser une variable comme identificateurs
    Par cameleon93 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2007, 12h57
  3. [ProC][SQL] Utiliser une variable comme nom de curseur
    Par adiGuba dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 06/12/2006, 11h55
  4. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57
  5. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12

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