3

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

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 によって返される値は次のとおりです。

[{},{}]

ありがとう

編集済み

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;
}
}
4

1 に答える 1

4

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

于 2012-05-07T17:40:03.820 に答える