3
我有一个好奇的问题,我找不到如何解决它。 我在PHP中使用JsonSerializable接口来创建一个返回的JSON。在我使用的一个对象中,我有一个变量是一个对象数组。当数组只包含一个对象时它正在工作,但当有几个时,我得到一个空数组。我不明白。这是代码:PHP JsonSerializable嵌套对象
class SessionDate implements JsonSerializable {
private $_players;
public function getPlayers() { return $this->_players; }
public function setPlayers($players) {
$this->_players = $players;
}
public function jsonSerialize(){
return [
'players' => $this->getPlayers() // This is an array of player
];
}
}
class Player implements JsonSerializable {
private $_id;
private $_name;
public function getId() { return $this->_id; }
public function setId($id) { $this->_id = $id; }
public function getName() { return $this->_name; }
public function setName($name) { $this->_name = $name; }
public function jsonSerialize(){
return [
'id' => $this->getId(),
'name' => $this->getName()
];
}
}
而且我这是怎么弄的球员名单:
$q = $this->_db->prepare('the query');
$q->execute();
$players = [];
while ($data = $q->fetch()) {
$sessionPlayer = constructPlayer($data);
$players[] = $sessionPlayer;
}
return $players;
我在做什么错?为什么它有一个球员,而不是更多的?
谢谢。
**编辑**
我打电话跟$阿贾克斯PHP的动作,看来,当有一个以上的玩家,在$就响应经历错误。因此,也许这是因为JSON没有格式化以及...
什么是'constructPlayer'? – raina77ow
这只是一系列设置数据给对象播放器。这是工作,因为只有一个我得到所有的数据... – Fred