Bonjour,

J'ai une classe avec comme propriété un tableau déclaré par : var $TableauOperations = [];

L'unique instance de cette classe est stockée comme variable de session.

Une méthode de cette classe remplit le tableau en question (par paquets) ; jusque là tout fonctionne bien.

Pour pouvoir utiliser cette méthode plusieurs fois sans écraser les éléments précédents, je souhaite utiliser la fonction count() afin de ne pas repartir de l'indice 0 mais d'un indice correspondant au nombre d'enregistrements précédents. Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Class ExosFeuille {
 
var $NomFeuille ;	// sera affiché pour re-choisir une feuille existante
var $TableauOperations = [];
 
public function __construct(string $NFeuille) 
	{
        $this->NomFeuille = $NFeuille;
	}	// fin constructeur
 
public function AjouteOperations($TypeOp, int $NbNb, int $TailleNbs, $NbOccurences)
	{
	$Compte = count($TableauOperations);
	for ($i = 0 ; $i < $NbOccurences ; $i++)
		{
		$NOp = new ExosOperation($TypeOp, $NbNb, $TailleNbs);
		$NOp->Init();
		$this->TableauOperations[$i+$Compte] = $NOp;
		}
	}
Mais quand j'arrive à la ligne utilisant le "count" je prends l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Warning: Undefined variable $TableauOperations in C:\xampp\htdocs\ExosClasses.inc.php on line 142
 
Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in C:\xampp\htdocs\ExosClasses.inc.php:142 Stack trace: #0 C:\xampp\htdocs\ModificationFeuille.php(16): ExosFeuille->AjouteOperations(0, 2, 2, '4') #1 {main} thrown in C:\xampp\htdocs\ExosClasses.inc.php on line 142
Je ne comprends pas le warning, car, dans la version précédente, j'avais déjà cette ligne de code qui utilise le même tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$this->TableauOperations[$i] = $NOp;
Je pense que l'erreur ensuite provient de la même cause que celle du warning.

Help