PHP:返回最后一个json对象

时间:2012-12-07 19:50:03

标签: php json

修改

感谢您对此的所有输入,我确实在我的问题中发现错误,现在进行修改。对不起。

我试图弄清楚如何返回我渲染的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()返回错误,指出第一个参数应该是数组。

感谢您提供任何帮助。

3 个答案:

答案 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