joboy84 Posté 15 Juin 2008 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
KnockedMaster Posté 15 Juin 2008 Posté 15 Juin 2008 Salut, Pour vérifier si une chaîne A contient une chaîne B, tu peux détourner strpos . @+
joboy84 Posté 15 Juin 2008 Auteur 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
joboy84 Posté 15 Juin 2008 Auteur 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
Kioob Posté 15 Juin 2008 Posté 15 Juin 2008 dans la boucle il faut utiliser strpos, comme conseillé par KnockedMaster
joboy84 Posté 15 Juin 2008 Auteur 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...
KnockedMaster Posté 15 Juin 2008 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
joboy84 Posté 15 Juin 2008 Auteur Posté 15 Juin 2008 Effectivement... Merci pour votre aide Bonne soirée
joboy84 Posté 16 Juin 2008 Auteur 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...
KnockedMaster Posté 16 Juin 2008 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant