0

编辑

感谢您对此的所有输入,我确实在我的问题中发现了错误,因此现在进行修改。对此感到抱歉。

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

感谢您对此的任何帮助。

4

3 回答 3

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);
}
于 2012-12-07T19:54:49.317 回答
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']);

于 2012-12-07T20:48:30.150 回答
0

也许您需要将该 json 输出转换为 php 数组(json_decode() 函数),然后您可以使用 array_pop() 函数获取最后一项: https ://php.net/array_pop

于 2012-12-07T19:56:41.700 回答