2012-05-07 10 views
3

私はarray_pushでクラスの配列を作成するPHPファイルを持っています。この配列をJSON形式に変換する必要があります。 配列は完全に作成されますが、JSONにエンコードしようとすると、返される値は空の要素の配列になります。JSONへのPHPパス配列

の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); 

JSONで返される値である:

[{},{}] 

おかげ

EDITED

の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) 

クラス定義:

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

'var_dump($ return);'出力は何ですか? – Paulpro

+0

はオブジェクトの$ classの値ですか?その場合は、オブジェクトのプロパティがpublicであることを確認してください.json_encodeはプライベートプロパティにアクセスしません。 EDIT - 明確にする - json_encodeはプライベートプロパティにアクセスできますが、クラス内のメソッドから実行される場合に限ります。 – TheOx

+0

'$ var-> findimatge($ list [$ i] - > getIdBibl())'の出力は何ですか? '$ class'の前の値を上書きしています –

答えて

4

あなたのオブジェクトのプロパティはすべてプライベートです - 彼らはjson_encodeにアクセスできるようにするために、公開する必要があります。または、オブジェクトメソッド内からjson_encodeを呼び出す必要があります。

+0

@ TheOnyxありがとう、私はプライベートで間違いを犯しました。 –