Notice: Undefined offset: 0 in

Bonjour a tous,

Voilà je viens posté sur un forum ce que je fais peux car je suis à bout de nerfs !
Cela fait 3 jours que suis bloqué avec un undefined offset et que je n'arrive pas à m'en débarrasser (je progrqmme en POO).

Notice: Undefined offset: 0 in C:\wamp\www\***\Lib\Collection.class.php on line 38

Ma collection contient ceci vers la ligne 38 :

public function GetElement($index)
    {
    	return $this->_array[$index -1]; //Ligne  38
    }


Mon tableau commence bien à 1 pourtant :

 public function Collection()
    {

    	$this->_array=array();
    	$this->_compteur=0;
    }

    public function Add($obj)
    {
    	$this->_array[$this->_compteur]=$obj;
		$this->_compteur++;

    }

	public function Affiche()
	{
		var_dump ($this->_array);
	}

    public function Remove($obj)
    {
    	$this->_array[]=$obj;
    	$this->_compteur++;

    }


Voilà, j'aimerais avoir votre aide car c'est insupportable de ne as pouvoir résoudre une erreur que je pense n'est pas si compliqué mais je dois passer à côté..
Si je dois vous fournir quelques indications en plus : je suis présent.

Merci de votre aide,

Roni.

5 réponses

  1. Contributeur
    si index est trop petit (0) ou trop grand, il y a une erreur. Test la valeur d'index avant de le passer dans le tableau.
    1. En faisant quoi ? Var_dump ($index) ?
      Et ce var_dump je le fais ou ?
      1. Contributeur
        public function GetElement($index)
            {
            	return $this->_array[$index -1]; //Ligne  38
            }
        
        Ton erreur a lieu là, c'est là qu'il faut modifier
        public function GetElement($index)
            {
                if( $index<1 || $index>compteur) {exit();}//  Gros problème
            	return $this->_array[$index -1]; //Ligne  38
            }
        
        1. Bonjour,

          Meme si c'est trop tard mais ça pourra aider d'autres personnes faisant face au meme problème:

          veuillez modifier la ligne suivante:

          de "error_reporting = E_ALL " à "error_reporting = E_ALL & ~E_NOTICE"

          dans le fichier php.ini
        2. Bonjour

          Il ne faut surtout pas faire cette modification.
          Elle ne corrige pas l'erreur, elle cache juste le message. L'erreur est donc toujours là, et il y en a peut-être d'autres parce que ta "correction" consiste à fermer les yeux pour ne plus voir le problème.
          C'est la pire chose à faire.
      2. Merci pour votre aide sur toi Char Snipeur mais si j'ajoute ce que tu viens de mettre, je retrouve avec cette erreur :

        Notice: Use of undefined constant _compteur - assumed '_compteur'
        1. Contributeur
          ba, oui, à toi de faire preuve d'un peut 'intelligence et de corriger ce que j'écris. j'ai pas fais gaffe que ta variable avait un caractère souligné juste avant.