Bonsoir,
Comment déclare-ton une variable de type tableau comme membre d'une classe ? On ne peut pas utiliser array() et donc quand après j'essaye d'utiliser les fonctions des tableau (genre array_push) il me dit que ça n'est pas un tableau.
Bonsoir,
Comment déclare-ton une variable de type tableau comme membre d'une classe ? On ne peut pas utiliser array() et donc quand après j'essaye d'utiliser les fonctions des tableau (genre array_push) il me dit que ça n'est pas un tableau.
Comment declares-tu ton membre ?
Ceci ne pause pas de prob:
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 class A { $member = array(); } // autre possibilité class A { function __construct() { $this->member = array(); } } // autre class A { } $a = new A; $a->member = array();
Mon problème est très similaire. Le tableau déclaré comme membre s'initialise bien en tant que tableau dans le script principal, mais pas dans la fonction appelée par ce script
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 <?php $donnees = array(); $donnees[] = array('nom'=>'objet1', 'qualite'=>'premier', 'label_1'=> '123', 'label_2'=>' 456', 'price_1'=>'normal', 'price_2'=>'reduit'); class objet{ public $id; public $nom; public $qualite; public $Table1 = array(); public $Table2 = array(); /** Constructor */ function __construct($id){ global $donnees; $enreg = $donnees[$id]; $this->id = $id; $this->nom = $enreg['nom']; $this->qualite = $enreg['qualite']; $this->Table1[] = $enreg['label_1']; $this->Table2[] = $enreg['price_1']; $this->Table1[] = $enreg['label_2']; $this->Table2[] = $enreg['price_2']; } //Fin constructeur function __destruct(){ } } function make(){ $more = new objet(0); return $more->Table1[0]; } $objet1 = new objet(0); $test1 = $objet1->Table1[0]; $new = make(); $test=$new; ?>
J'ai testé dix fois ou plus le script précédent depuis hier avant de le poster (PHPEdit et Xdebug avec un point d'arrêt sur la ligne $test=$new pour tester la valeur de $new qui restait obstinément vide.
En continuant à travailler je suis revenu sur ce script et je retrouve bien $new = "123".
J'ai sûrement des hallucinations !!!!!
PS Il y a quand même un petit problème d'affichage de Xdebug qui dans la fonction <make() parait ne plus savoir que Table1 est un array()
Bin voilà j'ai fait ça et ça ne marche pas :
J'obtiens l'erreur suivante :Warning: array_push() [function.array-push]: First argument should be an array in...
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 <?php class MyMenu { var $title; var $entries = array(); function MyMenu($title) { $this->title = $title; } function addEntry($caption) { array_push($entries, $caption); } } ?>
Bonjour,
Lorsque tu souhaites appeler un attribut, il ne faut pas oublier de faire référence à ton instance.
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 <?php class MyMenu { public $title; public $entries = array(); public function __construct($title) { $this->title = $title; } public function addEntry($caption) { array_push($this->entries, $caption); } }
Partager