修改
感谢您对此的所有输入,我确实在我的问题中发现错误,现在进行修改。对不起。
我试图弄清楚如何返回我渲染的JSON字符串中的最后一个对象。我正在使用的两个功能:
public function revision($return = false)
{
$id = $this->input->post('galleryID');
$data = array('revision_count' => $this->revision->count_revision($id) );
if($return){
return json_encode($data);
}
else {
echo json_encode($data);
}
}
public function last_revision()
{
$allRevisions = json_decode($this->revision(),true);
return end($allRevisions);
}
问题是end()返回错误,指出第一个参数应该是数组。
感谢您提供任何帮助。
答案 0 :(得分:1)
您可以将edit_function()更改为:
public function edit_revision($return = false)
{
$galleryID = $this->input->post('galleryID');
$revisionID = $this->input->post('revisionID');
$data = array('revision_images' => $this->revision->get($galleryID, $revisionID) );
if($return)
return json_encode($data);
else
echo json_encode($data);
}
然后:
public function last_revision(true)
{
$allRevisions = json_decode($this->revision());
return end($allRevisions);
}
答案 1 :(得分:1)
这里需要注意的是json_decode
默认返回stdClass的实例。尝试使用json_decode($jsonstring, true)
将JSON作为PHP关联数组返回。
但是,您尚未包含$this->revision()
方法的功能。你能否展示一部分代码,因为这是你从?
编辑:
好的,在我们在您的代码中看到正确的功能之后,我想说几件事:
revision
方法中添加了$ return参数,但在需要时却没有使用它。您应该在$this->revision()
方法中将$this->revision(true)
更改为last_revision
。revision()
方法返回数据,那么json_encode
中的数据就没有多大意义,只有json_decode
结果。{只需传回原始数据数组。一旦你改变了这两件事,这应该有效:
$allRevisions = $this->revision(true); return end($allRevisions['revision_count']);
答案 2 :(得分:0)
也许您需要将json输出转换为php数组(json_decode()函数),然后您可以使用array_pop()函数获取最后一项: https://php.net/array_pop