拥有以下代码:
(...)
<?php foreach($this->albums as $album) :
$jsonalbum = Zend_Json::encode($album);
?>
<tr>
<td><?php echo $this->escape($album->tstamp);?></td>
<td><?php echo $this->escape($album->title);?></td>
<td><?php echo $this->escape($album->place);?></td>
<td class="link" onclick="popup(<?php echo $jsonalbum; ?>)">>></td>
<td>(...)
$album包含并显示数据,但$jsonalbum为空!我找不到哪里不对劲..有什么帮助吗?谢谢!
巴勃罗
发布于 2012-02-12 21:20:33
根据您的评论,相册的属性是受保护的,并且根据Zend_Json文档,Zend_Json::encode()只能访问公共属性。
如果您正在对PHP对象进行编码,那么默认情况下,编码机制只能访问这些对象的公共属性。当在要编码的对象上实现方法toJson()时,Zend_Json调用该方法并期望该对象返回其内部状态的JSON表示。
Zend_Json Documentation
在相册中实现方法toJson(),以便能够将其转换为json
发布于 2012-02-12 23:08:32
尝试将其转换为数组:$jsonalbum = Zend_Json::encode((array) $album);
发布于 2012-02-12 21:16:36
JSON不允许对象引用,因此应注意不要使用递归引用对对象进行编码。如果您有关于递归的问题,Zend_Json::encode()和Zend_Json_Encoder::encode()允许可选的第二个参数来检查递归;如果一个对象被序列化两次,就会抛出异常。
也许这是个错误?
https://stackoverflow.com/questions/9248860
复制相似问题