joboy84 Posté 15 Juin 2008 Partager Posté 15 Juin 2008 Bonjour, J'aimerai créer un jeu. Si le client trouve un chiffre qui n'est pas présent dans mon tableau, il aura gagné...sinon il aura perdu. Le problème est que je ne m'y connait pas trop avec les array. J'ai pensé faire: <?phpif (in_array($mot, array(sac,briser,tigre)){echo"Vous avez perdu mais vous êtes sur la bonne voie";} else{echo"Vous avez trouvé le bon mot";}?> Je pense que cela devrait fonctionner. Par contre j'aimerai que si le client tape par exemple "sachet" ou "labrisera" (fantaisiste) cela détecte que le mot était présent. Ex: sachet contient bien sac Comment faire pour indiquer : Si le $mot est présent en partie ? On peut faire: <?php in_array(%$mot%, array(sac,briser,tigre)) ?> Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
KnockedMaster Posté 15 Juin 2008 Partager Posté 15 Juin 2008 Salut, Pour vérifier si une chaîne A contient une chaîne B, tu peux détourner strpos . @+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
joboy84 Posté 15 Juin 2008 Auteur Partager Posté 15 Juin 2008 Salut, Pour vérifier si une chaîne A contient une chaîne B, tu peux détourner strpos . Bonjour, Merci pour votre aide. Par contre jene vois pas comment utiliser cette fonction. Je devrais faire comme cela? <?php$machaine = 'sac,briser,tigre';//ou $machaine = 'sac briser tigre';$atrouver = '$mot';$pos = strpos($machaine, $atrouver);if ($pos === false) { echo "La chaîne '$atrouver' n'a pas été trouvée dans la chaîne '$machaine'";} else { echo "La chaîne '$atrouver' a été trouvée dans la chaîne '$machaine'"; echo " et à la position $pos";}?> Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 15 Juin 2008 Partager Posté 15 Juin 2008 Ou bien utiliser une simple boucle sur le tableau. Lien vers le commentaire Partager sur d’autres sites More sharing options...
joboy84 Posté 15 Juin 2008 Auteur Partager Posté 15 Juin 2008 Merci pour vos suggestions mais... Supposons que je fasse: <?php$mot = 'rosace';$tableau = array(sac, briser, tigre);foreach ($tableau as $value){if ($mot = $value){echo"Vous avez presque trouvé";}else{echo"Vous avez perdu";}}?> Le mot "rosace" contient "sac"...Comment faire pour dire: si le mot contient en partie un des mots du tableau... Je ne peux pas utiliser %$value% ici ou bien? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 15 Juin 2008 Partager Posté 15 Juin 2008 dans la boucle il faut utiliser strpos, comme conseillé par KnockedMaster Lien vers le commentaire Partager sur d’autres sites More sharing options...
joboy84 Posté 15 Juin 2008 Auteur Partager Posté 15 Juin 2008 Bonjour, J'ai fait: <?php$mot = 'rosace';$tableau = array(sac, briser, tigre);foreach ($tableau as $value){$pos = strpos($value, $mot);if ($pos === false){echo"Vous avez presque trouvé";break;}else{echo"Vous avez perdu";break;}}?> Cela m'indique bien : "Vous avez presque trouvé". Par contre si je change la variable mot : $mot = 'block'; Cela m'indique aussi Vous avez presque trouvé...alors que dans ce cas de figure, cela devrait être le contraire... Lien vers le commentaire Partager sur d’autres sites More sharing options...
KnockedMaster Posté 15 Juin 2008 Partager Posté 15 Juin 2008 Re-, C'est normal, tu confonds les termes à traiter et à trouver. La fonction est détournée, ne pas l'oublier. Elle renvoie false si elle ne trouve pas la position de la chaîne à trouver dans la chaîne à traiter. Autrement dit quand elle ne trouve pas le mot. Or si elle ne trouve pas le mot, vous avez perdu. CQFD <?php$mot = 'sac';$tableau = array('rosace', 'briser', 'tigre');foreach ($tableau as $value){ if (strpos($value, $mot) === false) { echo "Vous avez perdu"; break; } else { echo "Vous avez presque trouvé"; break; }}?> Bonne soirée Lien vers le commentaire Partager sur d’autres sites More sharing options...
joboy84 Posté 15 Juin 2008 Auteur Partager Posté 15 Juin 2008 Effectivement... Merci pour votre aide Bonne soirée Lien vers le commentaire Partager sur d’autres sites More sharing options...
joboy84 Posté 16 Juin 2008 Auteur Partager Posté 16 Juin 2008 Arf, Je m'étais réjouis trop vite... Le problème est le suivant: Si je cherche la première occurence du tableau, cela fonctionne, mais pas pour les autres... Exemple: Je mets le mot sac. Cela m'indiquera "Vous avez presque trouvé" car ce mot est contenu dans rosace. Si maintenant je mets le mot "ris" dans la variable mot, cela m'indiquera "Vous avez perdu"...alors que ris est dans briser... En gros, seul le premier élément du tabeau est pris en compte... Lien vers le commentaire Partager sur d’autres sites More sharing options...
KnockedMaster Posté 16 Juin 2008 Partager Posté 16 Juin 2008 (modifié) Salut, Heu, c'est encore normal (comme bien souvent en informatique), je n'ai plus pensé aux break de ta boucle, je ne les utilise pas souvent En fait tu ne fais jamais qu'un tour dans ta boucle puisqu'à la première condition, que le retour soit true ou false, tu breakes. Impossible dans ces conditions de tester le deuxième ou le troisième mot de ton tableau. Re-CQFD <?php$mot = 'igr';$tableau = array('rosace', 'briser', 'tigre');foreach ($tableau as $value){ if (strpos($value, $mot) === false) { echo "Vous avez perdu"; } else { echo "Vous avez presque trouvé"; break; }}?> A toi de gérer les affichages comme bon te semble ... Voili voilou Bonne continuation Modifié 16 Juin 2008 par KnockedMaster Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant