8792 sujets

Développement web côté serveur, CMS

Bonjour, je n'arrive pas à éviter le Undefined offset dans mon while.

//Pour éviter l'Undefined offset

isset($temp[$tempcpt]["profondeur"])

//Mais dans le while

while(isset($temp[$tempcpt]["profondeur"])  >= $profondeur)

//Ca ne prend pas en compte la condition  >= $profondeur mais seulement le isset

Modifié par ToxiK (08 Feb 2007 - 14:37)
Et oui mais si je fais :


if (isset($temp[$tempcpt]["profondeur"]))
{
	while($temp[$tempcpt]["profondeur"] >= $profondeur) 
	{
		$tempcpt--;
	};
};


la vérification se fait à l'entrée du if, ensuite dans la boucle le compteur descent, et il se peut que le nouveau $temp[$tempcpt]["profondeur"] ne soit pas défini
Modifié par ToxiK (08 Feb 2007 - 11:15)
Administrateur
Bonjour,

dans ton 1er exemple, tu testes si true ou false (le booléen renvoyé par isset() est supérieur à $profondeur ou pas, doit y avoir un problème Smiley cligne

Si tu as 2 conditions, je mettrais

EDIT: hum, si $a est pas défini, le test ... bon j'ai rien dit [nuts]
while(isset($a) && ($a >= $b)){
// ...
}


EDIT2:
tu peux utiliser break; dans un if() (dans la boucle) pour sortir du while ...
Edited by Felipe (08 Feb 2007 - 13:40)
C'est exactement ça Smiley smile

Je teste une première fois, si le test est bon, je rentre dans le while, et à chaque passage du while je resteste, si le test est faux je sors de la boucle avec break;

if (isset($temp[$tempcpt]["profondeur"]))
			{
				while($temp[$tempcpt]["profondeur"] >= $profondeur) 
				{
					$tempcpt--;
					if (!isset($temp[$tempcpt]["profondeur"]))
					{
						break;
					}
					else
					{
						$retour = $temp[$tempcpt]["superieur"];
					};
				};
			};


Merci