2012-05-07 3 views
3

J'ai un fichier PHP qui crée un tableau de classe avec array_push et j'ai besoin de convertir ce tableau au format JSON. Le tableau est créé parfait mais quand j'essaye d'encoder en JSON la valeur retournée est un tableau d'éléments vides.Php pass array à JSON

le code de php:

$return = array(); 

if($_GET['action'] == 'loadImg'){ 
    $id = $_GET['idAct']; 
    $class = $var->selectActById($id); 
    $list = $class->getImatgesAct(); 
    for($i = 0; $i < sizeof($list);$i++){ 
     $class = $var->findimatge($list[$i]->getIdBibl()); 
     array_push($return, $class); 
    } 
} 
echo json_encode($return,true); 

La valeur retournée par JSON est:

[{},{}] 

Merci

ÉDITÉE

le var_dump:

array 
    0 => 
object(imatgeclass)[4] 
    private 'idimatge' => string '1' (length=1) 
    private 'nomimatge' => string 'hydra' (length=5) 
    private 'urlimatge' => string 'biblioimg/2012-05-06-23-19-17.jpg' (length=33) 
    1 => 
object(imatgeclass)[3] 
    private 'idimatge' => string '2' (length=1) 
    private 'nomimatge' => string 'pen' (length=3) 
    private 'urlimatge' => string 'biblioimg/2012-05-06-23-19-36.jpg' (length=33) 

La définition de classe:

class imatgeclass{ 

private $idimatge, $nomimatge, $urlimatge; 

public function setData($idimatge,$nomimatge,$urlimatge){ 
    $this->idimatge = $idimatge; 
    $this->nomimatge = $nomimatge; 
    $this->urlimatge = $urlimatge;  
} 
public function getIdImatge(){ 
    return $this->idimatge; 
} 
public function setIdImatge($idimatge){ 
    $this->idimatge = $idimatge; 
} 
public function getNomImatge(){ 
    return $this->nomimatge; 
} 
public function setNomImatge($nomimatge){ 
    $this->nomimatge = $nomimatge; 
} 
public function geturlimatge(){ 
    return $this->urlimatge; 
} 
public function setUrlImatge($urlimatge){ 
    $this->urlimatge = $urlimatge; 
} 
} 
+1

Que fait 'var_dump ($ return);' sortie? – Paulpro

+0

est la valeur de $ class un objet? Si c'est le cas, assurez-vous que les propriétés de l'objet sont publiques - json_encode n'accède pas aux propriétés privées. EDIT - pour clarifier - json_encode peut accéder aux propriétés privées mais seulement si elles sont exécutées à partir d'une méthode dans la classe. – TheOx

+0

Que devient $ var-> findimatge ($ list [$ i] -> getIdBibl()) 'en sortie? Il écrase la valeur précédente de '$ class' –

Répondre

4

Votre objet sont privées - ils doivent être publics afin d'être accessible à json_encode. Ou vous devez appeler json_encode à partir d'une méthode d'objet.

+0

@TheOnyx Merci beaucoup, j'ai fait une erreur avec le privé, merci maintenant ça marche. –