Addition explicite -

Eléphanteau du PHP | 12 Messages

25 nov. 2019, 10:49

Bonjour,

J'ai besoin d'incrémenter un indice de tableau (appelons-le "$indice") sur plusieurs lignes, mais je ne peux pas le faire par l'incrémentation standard (++indice ou indice++).

Donc, à chaque ligne je fais in incrémentation sauvage du genre:

$indice = 0;
[tableau][$indice+1];
[tableau][$indice+2];
-----------
[tableau][$indice+11];

Il le fait (donc il comprend ce que je veux faire) mais ça ne lui plait pas et il m'insulte:
[25-Nov-2019 08:34:51 UTC] PHP Notice: Undefined offset: 11 in /Applications/MAMP/htdocs/DVDTHEQUE/MesFonctions.php on line 111

Enfin, les symptômes ont évolué. Au début il m'insultait pour toutes de additions de 1 à 11.
Maintenant il n'y a que l'addition avec 11 qui le dérange.

J'ai tout essayé: avec des ' avec des " ... Toujours pareil!

J'en déduis que je viole une règle. Mais laquelle? Si quelqu'un a une idée ????

Le code réel ne donnerait pas plus que ce que j'ai indiqué.

Je précise que je travaille sur MAMP (MacOS) avec MAMP 5.4 et PHP 7.3

Mammouth du PHP | 2703 Messages

25 nov. 2019, 13:45

s'il ne dit rien à la ligne +10 mais seulement à la ligne +11, c'est que le tableau n'a pas assez d'éléments pour qu'il y ai un index 12.

Eléphanteau du PHP | 12 Messages

25 nov. 2019, 14:10

Originellement il ralait pour toutes les additions (de 0 à 11). Le tableau est fixe et a bien 12 éléments (3 rangées de 4 cellules)

Je ne sais pas pourquoi maintenant il n'y a que 11 qui le dérange.
Il comprend bien ce que je veux puisque il le fait bien. C'est une simple "PHP notice" et ça rempli le php_error.log
Ce que j'aurais voulu savoir c'est si je fais une erreur grossière de syntaxe.
Mystère !!

Mammouth du PHP | 1967 Messages

26 nov. 2019, 11:21

Une erreur de syntaxe non,

une erreur de logique probablement.
la notice t'indique que l'index demandé n'éxiste pas, donc soit ta source ne contient pas ce que tu crois soit tu en demande trop.

le plus simple pour éviter la notice est de tester sont éxistence avant avec empty() ou isset()

petit plus au cas où ca t'arrange.
$indice++ retourne sa valeur actuelle avant de s'incrémenter donc

$indice = 0;
echo $tableau[$indice++];
echo $tableau[$indice++];
echo $tableau[$indice++];

est identique à
echo $tableau[0];
echo $tableau[1];
echo $tableau[2];
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube