Warning: Undefined array key

Résolu
LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour, je n'arrive pas à comprendre cette erreur de Warning. Je travail en local avec wampserver. Si vous pouvez m'aider. Je vous remercie..

Warning: Undefined array key 2 in C:\wamp64\www\partitions\libs\init.php on line 9

function writeMenuV($index,$imp=0) {
    $hf = fopen("./libs/smenu$index.txt","r");
    while($line = trim(chop(fgets($hf,250)))) {
        if($line == "---") {
            $menu[count($menu)-1] .= "<hr size='1' noshade>"; }
        else {
            if(!isComment($line)) {
                $item = explode(";",$line);
                if(count($item) == 2) { $target = "main"; } else { $target = $item[2]; }
                if(count($item) == 1) {    $menu[] = "<div class=\"cat\">$line</div>"; }
                else                  { $menu[] = "<a href='$item[1]' target='$target'>$item[0]</a><br/>"; }
            }
        }
    }
    $col = "<div class='mv'>";
    for($n=0; $n<count($menu); $n++) { $col .= $menu[$n]; }
    return $col."</div>";
}

3 réponses

  1. Grandasse_ Messages postés 966 Date d'inscription   Statut Membre Dernière intervention   611
     

    Bonjour,

    De ce que je comprends

    if(count($item) == 2) { $target = "main"; } else { $target = $item[2]; }

    Ici tu regardes si item a une taille de 2, mais tu prends le 3eme élément (item[2] c'est le 3eme, puisque le tableau commence sur l'index 0)

    Or, item[2] n'existe pas, comme te l'indique le message d'erreur.


    0
    1. Grandasse_ Messages postés 966 Date d'inscription   Statut Membre Dernière intervention   611
       

      Ok c'est pire que ça.
      Tu écris : "si la longueur est 2 faire blabla, sinon prendre le 3eme élément".
      Dans le else, ce n'est pas parce que la valeur n'est pas 2 qu'elle vaut 3. Elle peut valoir 0 aussi.

      Donc si tu veux utiliser un élément du tableau, vérifie qu'il existe au moment de t'en servir.

      si item == 2 alors target = main

      si item == 3 alors target = item[2]

      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    Bonjour,

    Un array commence à 0

    Si tu as deux éléments dans ton tableau....  tu as donc un élément à l'indice 0 et un autre à l'indice 1  ....   l'indice 2 serait un troisième item....


    0
  3. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Bonjour je vous remercie de m'avoir aidé à résoudre mon soucis. Bonne journée.

    function writeMenuV($index) {
    	$hf = fopen("./libs/smenu$index.txt","r");
    	while($line = trim(chop(fgets($hf,250)))) {
    		if($line == "---") {
    			$menu[count($menu)-1] .= "<hr size='1' noshade>"; }
    		else {
    			if(!isComment($line)) {
    				$item = explode(";",$line);
    				if(count($item) == 1) {	$menu[] = "<div class=\"cat\">$line</div>"; }
    				else                  { $menu[] = "<a href='$item[1]' target='main'>$item[0]</a><br/>"; }
    			}
    		}
    	}
    	$col = "<div class='mv'>";
    	for($n=0; $n<count($menu); $n++) { $col .= $menu[$n]; }
    	return $col."</div>";
    }
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      bonjour, peux-tu alors marquer la discussion comme résolue?

      0