Aller au contenu

Utilisation de Array


joboy84

Sujets conseillés

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:

<?php

if (
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

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

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

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

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

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

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 :blush:

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 :P

<?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é par KnockedMaster
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...