Petit soucis avec une boucle...

  • Auteur de la discussion Auteur de la discussion joboy84
  • Date de début Date de début
WRInaute discret
Bonjour,

Je souhaite faire un jeu sur mon site.

Voici le code:

Code:
<?php

$mot     = 'vrie';
$tableau = array('janvier', 'fevrier', 'mars');

foreach ($tableau as $value)
{
    
    if (strpos($value, $mot)  === false)
    {
        echo "Vous avez perdu.";
    }
   if (strpos($value = $mot)
    {
        echo "Gagné: Vous avez trouvé le bon mot!";
    }
    else
    {
        echo "Vous y êtiez presque...";
    }
}

?>

Le probleme est que si je laisse ainsi, cela me renverrai:

Vous avez perdu.Vous y êtiez presque...Vous avez perdu.

Si j'utilise l'instruction break; cela m'affiche que j'ai perdu...

Svp aidez moi... :roll:

Merci
 
WRInaute discret
Ben meme si je ne fais que

Code:
<?php
foreach ($tableau as $value)
{
   
    if (strpos($value, $mot)  === false)
    {
        echo "Vous avez perdu.";
    }
    else
    {
        echo "Vous y êtiez presque...";
    }
} 
?>

Cela me retourne

Vous avez perdu.Vous y êtiez presque.Vous avez perdu
 
WRInaute impliqué
Qu'est ce que tu veux faire ? Afficher quelque chose ? Repérer un mot ET afficher un message le signalant ?

Quand tu fais tes tests il n'y a rien qui te force à afficher à chaque tour de manivelle.

Tu fais tes vérifications, si tu trouves tu breakes et tu affiches en fonction du traceur, si tu ne trouves rien au bout de la moulinette ben tu affiches un message unique :wink:

Code:
<?php
$mot        = 'fev';
$tableau    = array('janvier', 'fevrier', 'mars');

$traceur = 0;

foreach ($tableau as $value)
{
    if (strpos($value, $mot) === false)
    {
        $traceur = 0;
    }
    elseif ($value == $mot)
    {
        $traceur = 2;
        break;
    }
    else
    {
        $traceur = 1;
        break;
    }
}

switch($traceur)
{
	case 0:
		echo 'perdu';
		break;
	case 1:
		echo 'presque';
		break;
	case 2:
		echo 'gagné';
		break;;
}
?>

C'est un peu bidouillage mais ça fonctionne.
 
WRInaute discret
joboy84 a dit:
Ben meme si je ne fais que
Cela me retourne
Vous avez perdu.Vous y êtiez presque.Vous avez perdu

Et bien c'est normal que cela retourne ça !

tu pars avec :
Code:
$mot = 'vrie';
$tableau = array('janvier', 'fevrier', 'mars');
'vrie' n'est pas dans 'janvier' -> vous avez perdu.
'vrie' est dans 'fevrier' -> vous y etiez presque
'vrie' n'est pas dans 'mars' -> vous avez perdu.

Bref, ce que tu veux n'est pas clair. Expliques davantage (en prenant des exemples).
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut