Warning: Undefined array key

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - Modifié le 20 déc. 2022 à 21:36
yg_be Messages postés 22694 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 - 21 déc. 2022 à 10:14

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

Grandasse_ Messages postés 924 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 27 avril 2023 592
Modifié le 20 déc. 2022 à 21:49

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
Grandasse_ Messages postés 924 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 27 avril 2023 592
21 déc. 2022 à 09:18

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
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
20 déc. 2022 à 21:49

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
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 déc. 2022 à 09:59

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
yg_be Messages postés 22694 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
Modifié le 21 déc. 2022 à 10:14

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

0