Souci avec mes variables

[Résolu]
Signaler
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008
-
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008
-
bonjour

Je suis en train de me faire un petit script pour un petit jeux basique 
et j'ai besoin de votre aide car je seche malgres plusieurs tentative.

je debute ,j'implore vote indulgence 

Je vous expose mon souci

// J'ai trois variable  nommé $var1 ,$var2, $var3
// Leurs valeurs est attribué aleatoirement par rand()

  $var1 = rand(1,4);
  $var2 = rand(1,4);
  $var3 = rand(1,4);

// le but et maintenant de classé mes variables par rapport a leurs resultats .
// dans ce premier cas les 3 variables doivent etre egale a 1if ($var1 1 && $var2 1 && $var3 == 1)  
   $noms = "les 3 variable sont egale a 1";

// Dans ce deuxieme cas ,// $var1 2 ou $var13 ;    $var2 = 2 ou  $var2 =3;     $var3 = 2ou  $var2 =3elseif (($var1 2 or $var1 3)  &&  ($var2 == 2 or $var2 == 3)  &&  ($var2 == 2 or $var2 == 3))
   $noms = "les 3 variable sont comprise entre   2 et  3";

// troisime cas // $var1 1 ou 2 ou 3  ou 4;   $var2 1 ou 2 ou 3 ou 4 ;    $var3 = 1 ou 2ou 3 ou 4 ;
else
$noms="les variable sont compris entre 1et 4";

// ecriture du resultats

echo"$noms";

j'ai raccourci  un peu mon script ,mais l'essentiel est la
Mon souci est dans le deuxieme cas

mon but est que si
$var1 && $var2 $$ var3 ==
2,2,2
ou 333
ou 232
ou 332 etc.....
on execute la deuxieme requete

Je sais c'est pas clair mon histoire ,mais je reste connecter pour vous donner tous complement d'info

Je vous remerci d'avance pour votre aide

Christian

13 réponses

Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

J'ai cherché compliqué, lorsque c'était tout simple - -' (comme d'habitude, cela montre mon esprit torturé ) Je t'ai mis quand même mis le premier code avec des commentaires histoire que tu comprennes un peu (après tout cela ne peut être que bénéfique)


<hr />
Voila la version simple :



<?php


$var1 = mt_rand(1,4);
$var2 = mt_rand(1,4);
$var3 = mt_rand(1,4);if ($var1 1 AND $var2 1 AND $var3 === 1) echo 'Les 3 variables sont égales à 1.';
elseif ($var1 !== 1 AND $var1 !== 4 AND $var2 !== 1 AND $var2 !== 4 AND $var3 !== 1 AND $var3 !== 4) echo 'Les 3 variables sont entre 2 et 3.';
else echo 'Les 3 variables sont entre 1 et 4.';

?>




<hr />
Voici la version complexe qui sert pas à grand chose à par montré un exemple avec des tableaux.

J'ai corrigé le problème et j'ai ajouté des commentaires pour que tu puisses comprendre :
<?php
$var = array(mt_rand(1,4), mt_rand(1,4), mt_rand(1,4));
/*
On crée un tableau (array).
Les tableaux sont très efficaces dès qu'il s'agit de stocker, gérer et traiter des données en groupe.
Les tableaux sont composés sous la forme : clé => valeur.
Pour afficher obtenir une valeur, il suffit de mettre au bout du nom de la variable [clé] (exemple : $array[1] pour obtenir la valeur de la clé "1" dans le tableau array)Le tableau crée aura la forme suivante :
0 => $var1
1 => $var2
2 => $var3
*/
$array = array_count_values($var);
/*
La fonction array_count_values retourne un tableau contenant les valeurs du tableau comme clés et leur fréquence comme valeur.
C'est à dire : si le tableau est de la forme :
0 => 1
1 => 4
3 => 1
La fonction va renvoyer un tableau de la forme :
1 => 2 (Car elle a trouvé 2 valeurs 1)
4 => 1 (Car elle a trouvé 1 valeur 4)
*/
if (isset($array[1]) AND $array[1] === 3) echo 'Les 3 variables sont égales à 1.';
/* On vérifie si la fonction array_count_values a trouvé 3 valeurs 1 */
elseif (!isset($array[1]) AND !isset($array[4])) echo 'Les 3 variables sont entre 2 et 3.';
/* On vérifie si la fonction array_count_values n'a trouvé aucune valeur 1 et 4 et si elle a trouvé */
else echo'Les 3 variables sont entre 1 et 4.';
echo 'Valeur de $var1 "',$var[0],'", Valeur de $var2 "',$var[1],'" et Valeur de $var3 = "',$var[2],'"';
?>

For every choice, a consequence (Fable)
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

Salut,
Je comprends pas trop car un moment tu mets "$noms="les variable sont compris entre 1et 4";" c'est normal puisque tu fais des chiffres aléatoires compris entre 1 et 4 - -"

For every choice, a consequence (Fable)
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Disons que :
1.  if ($var1 1 && $var2 1 && $var3 == 1)  
2.  $marquee = "Bravo !!! Vous avez gagnez $0.004";
3.4.  elseif         ($var1 2 && $var2 2 && $var3 == 2)   $noms = "les 3 variable sont comprise entre   2 et  3";5.  elseif        ($var1 3 && $var2 3 && $var3 == 3)   $noms = "les 3 variable sont comprise entre   2 et  3";6.  elseif        ($var1 2 && $var2 2 && $var3 == 3)   $noms = "les 3 variable sont comprise entre   2 et  3";7.  elseif        ($var1 3 && $var2 2 && $var3 == 2)   $noms = "les 3 variable sont comprise entre   2 et  3"; 8. elseif        ($var1 2 && $var2 3 && $var3 == 3)   $noms = "les 3 variable sont comprise entre   2 et  3";

etc.....

Ce que je veut c'est recrouper les ligne 4 a 8 en une seule

Le troisieme cas est la dans le cas où les deux premier cas ne serait pas exacte

Merci
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Je ne suis trompé dans mes variables ,je recommence



Disons que :
1.  if ($var1 1 && $var2 1 && $var3 == 1)  
2.  $noms = "les 3 variable sont egale a 1";
3.
4. 
elseif         ($var1 2 && $var2 2 && $var3 == 2)
  $noms = "les 3 variable sont comprise entre   2 et  3";
5. 
elseif        ($var1 3 && $var2 3 && $var3 == 3)
  $noms = "les 3 variable sont comprise entre   2 et  3";
6. 
elseif        ($var1 2 && $var2 2 && $var3 ==
3)   $noms = "les 3 variable sont comprise entre   2 et  3";
7. 
elseif        ($var1 3 && $var2 2 && $var3 ==
2)   $noms = "les 3 variable sont comprise entre   2 et  3";
 8.
elseif        ($var1 2 && $var2 3 && $var3 ==
3)   $noms = "les 3 variable sont comprise entre   2 et  3";

etc.....

Ce que je veut c'est recrouper les ligne 4 a 8 en une seule

Le troisieme cas est la dans le cas où les deux premier cas ne serait pas exacte

Merci
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

<?php




$array = array(mt_rand(1,4), mt_rand(1,4), mt_rand(1,4));
$array = array_count_values($array);
if ($array[1] === 3) echo 'Les 3 variables sont égales à 1.';
elseif (($array[2] >= 2 AND $array[3] <= 1) OR ($array[3] >= 2 AND $array[2] <= 1)) echo 'Les 3 variables sont entre 2 et 3.';
else echo 'Les 3 variables sont entre 1 et 4.';


?>






For every choice, a consequence (Fable)
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Je viens d'essayer d'adaper votre code au mien mais pour l'instant je n y arrive pas

Vous ne connaissez pas  une methode plus proche de mon code ?

dans mon script chaque $var correspond a une image
donc selon son resultat

1=image1
2=image2
3=image3
4=image4 ....

et dans votre code je n'arrive pas a connaitre la valeur des 3 variables

Merci de ton aide
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

<?php




$var = array(mt_rand(1,4), mt_rand(1,4), mt_rand(1,4));
$array = array_count_values($var);
if ($array[1] === 3) echo 'Les 3 variables sont égales à 1.';
elseif (($array[2] >= 2 AND $array[3] <= 1) OR ($array[3] >= 2 AND $array[2] <= 1)) echo 'Les 3 variables sont entre 2 et 3.';
else echo 'Les 3 variables sont entre 1 et 4.';
echo 'Valeur de $var1 "',$var[0],'", Valeur de $var2 "',$var[1],'" et Valeur de $var3 = "',$var[2],'"';


?>






For every choice, a consequence (Fable)
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Merci
cette fois j'ai compris en parti votre code
mais voici un exemple d'un resultat  que l'on obtient grace a ce code

Les 3 variables sont entre 2 et 3.Valeur de $var1 "2", Valeur de $var2 "2" et Valeur de $var3 = "4"

Sur cette exemple ,on peu voir que
$var3 = "4"  et donc nos variable ne sont pas comprise entre 2 et 3

Mais on se rapproche a grand pas de mon souci
Merci encore.
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Effectivement ,votre 2eme code marche aussi est parait plus simple

J'ai  travaillé sur votre 1er code et j'ai pu en tirer ceci :

<?php
$var = array(mt_rand(1,4), mt_rand(1,4), mt_rand(1,4));
$array = array_count_values($var);

if ($array[1] === 3) $noms='egale à 1';
elseif     (($array[2] == 2 AND $array[3] == 1) OR ($array[3] == 2 AND $array[2] == 1)
        OR ($array[2] === 3)  OR ($array[3] === 3)) $noms='Compris entre 2 et 3';

else $noms='compris entre 1 et 4';

$var1 = $var[0];
$var2 = $var[1];
$var3 = $var[2];

echo  $noms;
?>
Ca marche aussi  
[javascript:Insert_Emoticon('/imgs2/smile_big.gif'); ]
J'ai reussi a adaptés votre 1er code a mon script alors je le garde ,
mais je garde l'autre sous le coude en cas de souci

Merci pour tout !
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

"votre 2eme code marche aussi est parait plus simple" normal il est plus simple
Perso je te conseil d'utiliser le 2nd code qui sera plus rapide (puisque ce code n'utilise que des conditions).
J'ai laissé le 1er code dans le but de vous montré comment utiliser les tableaux.

Mais après tout c'est toi qui choisit
Heureux d'avoir pu t'aider et si tu as un autre problème n'hésite pas (et la prochaine fois j'essaye de faire plus simple directement lol)

For every choice, a consequence (Fable)
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Juste une derniere petite question
dans votre deuxieme code

......





elseif ($var1 !== 1 AND $var1 !== 4 AND $var2 !== 1 AND $var2 !== 4 AND $var3 !== 1 AND $var3 !== 4)

que signifie   




!==   ?

Histoire que je puisse comprendre aussi le deuxieme code,
afin de l'adapter a mon script si necessaire

Merci
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

"!= " cela signifie " différent de ".
<hr />
Ici on utilise 2 " =" car un chiffre peut avoir 2 types : string sous la forme : "2" ou int sous le forme : 2.
Par exemple : "
<?php
$var1 =2;
if ($var1 =='2') echo'bonjour';
?>" ce code va afficher "Bonjour"
<?php
$var1 =2;
if ($var1 === '2') echo'bonjour';
?>" ce code n'affichera jamais "Bonjour"
<hr />
Comme PHP n'a pas besoin de faire la conversion de types (c'est à dire vérifier si la variable contient le même chiffre en string (ou en int)) alors l'utilisation du "===" ou "!==" est plus rapide.

Et comme me la dis Anthomicro quand je lui ai posé la même question : "les guillemets ont leur importance."

For every choice, a consequence (Fable)
Messages postés
40
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
7 avril 2008

Merci pour tout.

[javascript:Insert_Emoticon('/imgs2/smile_approve.gif'); ]