Page 1 sur 1

Addition explicite -

Posté : 25 nov. 2019, 10:49
par henri34
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

Re: Addition explicite -

Posté : 25 nov. 2019, 13:45
par or 1
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.

Re: Addition explicite -

Posté : 25 nov. 2019, 14:10
par henri34
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 !!

Re: Addition explicite -

Posté : 26 nov. 2019, 11:21
par Spols
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];