Dans le tableau ou pas?

Fermé
elise - 4 janv. 2009 à 10:07
 elise - 4 janv. 2009 à 11:25
Bonjour,
J'essaie de savoir si un chiffre est dans mon tableau avec n chiffres. Je veux utiliser une fonction mais quand je veux afficher mon resultat (oui ou non la valeur est dans le tableau) alors il me répond tjs non. Une idée???

while ($i<=$n)
{
$rand = rand(1, 10);
$tab[$i] = $rand;
echo $tab[$i] ;
$i = $i+1;
}

function dedansLin($tab, $i, $n)
{
$found = false;
while ($i<=$n)
{
if ($tab[$i] == 2)
$found = true;
$i=$i+1;
}
return $found;
}

$n=10;
$i=1;
$a=dedansLin($tab,$i,$n);
if ($a == true)
echo "oui<br/>";
else
echo "non<br/>";
A voir également:

2 réponses

Bonjour

À moins que tu ne nous caches le début du programme, ton $n n'est initialisé que vers le milieu du programme, pas au début. Il vaut 0 quand tu essayes d'initialiser $tab.
Quelques remarques :
$i n'est pas initialisé au début du programme
La fonction dedansLin est insérée au milieu du programme principal. Rien ne n'interdit, mais au niveau compréhension, ça n'aide pas.
Dans ta fonction, pourquoi ne pas faire directement un "return true" quand tu trouves la bonne valeur ? À quoi bon chercher dans la suite du tableau ?
if ($a == true) est inutilement long. $a est strictement la même chose que $a==true, autant écrire if ($a). D'ailleurs, dans la vie courante, tu dis : "j'irai me promener s'il fait beau" ou "j'irai me promener s'il est vrai qu'il fait beau" ?
0
J'ai modifié quelques trucs mais ça ne marche tjs pas. $a vaut n'est jamais vrai même si il y a effectivement un 2 dans mon tableau.
Je tiens à conserver le $trouve dans ma fonction. Je pense que c'est ma fonction qui a un probleme car quand je le fais sans utiliser une fonction ça marche. Si tu peux encore m'aider, merci d'avance.

$n = 10;
$i = 1;
while ($i<=$n)
{
$rand = rand(1, 10);
$tab[$i] = $rand;
echo $tab[$i]." " ;
$i = $i+1;
}
echo "<br/>";

$a=dedansLin($tab,$i,$n);
if ($a)
echo "oui<br/>";
else
echo "non<br/>";

function dedansLin($tab, $i, $n)
{
$trouve=false;
while ($i<=$n)
{
if ($tab[$i] == 2)
$trouve= true;
$i=$i+1;
}
return $trouve;
}
0
Tu ne fais pas attention...
$a=dedansLin($tab,$i,$n);
As-tu réfléchi à ce que valait $i quand tu appelles cette ligne ???
0
Merci c'est nickel maintenant!
0