Erreur notice avec return

Résolu
Bonjour,

Je voudrais que lorsqu'une condition est vérifiée, le script termine son exécution, sans utiliser die() mais plutôt l'instruction return.

Voici mon code:

foreach($_POST as $key=>$vars){
				if($key=='psw'){
					$objPSW=new psw(array( $_POST['psw'],$_POST['pswC']));
					list($psw,$pswC)=$objPSW->changed();
					if($pswC!==$psw){
						$profile=new profile();
						$profile->edit(element::verbose(array('psw','Le mot de passe ne correspond pas au code de confirmation')));
						return;
					}
					continue;
				}
				$name=$key;
				${$name}=string::inString($vars);
			}


Il se trouve que ce script me génère l'erreur suivante:
Notice: Undefined offset: 0 in /home/www/smoke/www/projects/secretExhibition/tools.php on line 75

Notice: Undefined offset: 1 in /home/www/smoke/www/projects/secretExhibition/tools.php on line 75

la ligne 75 correspondant précisément au return.

J'ai googlisé mon problème sans trouver la moindre réponse, et j'aimerais bien savoir à quoi cette notice est dûe.

Quelqu'un aurait il une idée?

Smoke
Configuration: Windows Vista
Opera 9.64

3 réponses

  1. J'ai un vague souvenir d'une erreur comme ça.
    Je te promet donc pas THE solution mais une erreur comme ça c'est pas un problème d'indice dans des tableaux ?
    1. pas sûr, mais c'est possible^^

      en tous cas j'ai amélioré mon script, il n'était pas très correct, et l'erreur a disparu. Maintenant j'ai:

      Notice: Undefined variable: errors in /home/www/smoke/www/projects/secretExhibition/tools.php on line 110

      Fatal error: Cannot access empty property in /home/www/smoke/www/projects/secretExhibition/tools.php on line 110

      il s'agit de la classe:

      class verbose {
      	public $errors;
      	public $type;
      	
      	function __construct($errors,$type){
      		$this->errors=$errors;
      		$this->type=$type;
      	}
      	function display(){
      		if($this->errors){
      			switch($this->type){
      				case 'liste':
      					self::liste();
      				break;
      				case 'message':
      					self::message();
      				break;
      				default:
      					self::message();
      				break;
      			}
      		}else{
      			return;
      		}
      		
      	}
      	function liste(){
      		foreach($this->errors as $key=>$obj){
      			if( !$_POST[$key] ) $verbose.="<br />$obj est manquant.";
      		}
      		if( !$verbose ){
      			return;
      		}else{
      			return $verbose;
      		}
      	}
      	function message(){
      		$verbose=$this->$errors;//ligne 110
      		echo $verbose;
      	}
      }
      1. $verbose=$this->$errors;//ligne 110

        les deux dernières erreurs sont dues à la mauvaise construction ici: $this->$errors, remplacé par $this->error.
        Ca fonctionne maintenant^^ merci babou de t'être intéressé à mon problème^^