Notice: Undefined offset: 0 in

Ronii28 -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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.
    0
  2. Ronii28
     
    En faisant quoi ? Var_dump ($index) ?
    Et ce var_dump je le fais ou ?
    0
  3. Joe
     
    Déjà, dans Remove, c'est compteur-- au lieu de ++.
    0
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
        }
    
    0
    1. Saloua_ELKHOUFAIRI Messages postés 1 Statut Membre
       
      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
      0
    2. Utilisateur anonyme
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ronii28
     
    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'
    0
    1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      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.
      0