Problème avec un tableau d'objet
Bonjour,
J'ai déclaré un tableau d'objet, et quand j'appelle une méthode de la classe de l'objet contenu dans le tableau, j'ai une erreur de syntaxe. Voici la ligne posant problème
Code:
$numpersonne = $this->personne[$n]->getnum();
et l'erreur retourné
Fatal error: Call to a member function getnum() on a non-object in /var/www/test/index.php on line 23
Voici ma classe entière si il y a besoin :
Code:
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
include "class.personne.php";
class Liste
{
private $personne = array();
private $numdeSCD = array();
public function recupnumdatebaserh() // récupération numero RH (7545) et date de départ
{
$fichier = fopen("CHCM_Upload_Excel_Template_V2_0.csv", "r");
$n = 0;//indice du tableau personne
$ligne = 0;
while (($data = fgetcsv($fichier, 1000, ";")) !== FALSE) {
$num = count($data); //nombre de colonne dans le fichier
for( $c=0; $c < $num; $c++) {
if ($c == 2 && !empty($data[$c]) && $ligne!==0){ // Si le curseur est positionné dans la colonne des numéros RH et que ce numéro n'est pas nulle
$this->personne[$n] = new Personne(); //création d'un nouvel objet personne pour la nouvelle ligne
$this->personne[$n]->setnum($data[$c]);
}
$numpersonne = $this->personne[$n]->getnum();
if($c==3 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des GID de départ et que le numéro RH de la même ligne n'est pas nulle
$this->personne[$n]->setgid($data[$c]);
}
if($c==4 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des noms de départ et que le numéro RH de la même ligne n'est pas nulle
$this->personne[$n]->setnom($data[$c]);
}
if($c==5 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des prénoms de départ et que le numéro RH de la même ligne n'est pas nulle
$this->personne[$n]->setprenom($data[$c]);
}
if($c==27 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des date de départ et que le numéro RH de la même ligne n'est pas nulle
$this->personne[$n]->setdate($data[$c]);
}
if($c==36 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des noms de départ et que le numéro RH de la même ligne n'est pas nulle
$this->personne[$n]->setservice($data[$c]);
}
if($c==37 && !empty($numpersonne) && $ligne!==0){ // Si le curseur est positionné dans la colonne des sponsor de départ et que le numéro RH de la même ligne n'est pas nulle
$this->personne[$n]->setsponsor($data[$c]);
$n++; //vu que c'est le dernier champ de la ligne on peut changer de ligne
}
}
$ligne++;
}
fclose($fichier);
}
public function recupnumSCD()
{
$fichier = fopen("scdexport_full.csv", "r");
$n = 0;
while (($data = fgetcsv($fichier, 1000, "!")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
if ($c == 44 && !empty($data[$c])){
$this->numdeSCD[$n]=$data[$c];
$n++;
}
}
}
fclose($fichier);
}
public function compare()
{
$nbligneRH = count($this->personne);
$nbligneSCD = count($this->numdeSCD);
$today = date("Ymd");
for($i=0;$i<$nbligneRH;$i++){
$x=0;
while($x<$nbligneSCD){
if($this->personne[$i]->getnum() == $this->numdeSCD[$x])break;
$x++;
if($x == $nbligneSCD && $today < $this->personne[$i]->getdate())echo $this->personne[$i]->getnum()." : ".$this->personne[$i]->getdate()."<br/>";
}
}
}
} |
Avez-vous une idée ?
Merci ^^