0

編集

これに関するすべての入力に感謝します。質問でエラーを見つけたので、今修正します。そのために残念。

レンダリングした JSON 文字列の最後のオブジェクトを返す方法を見つけようとしています。私が取り組んでいる2つの機能:

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

json_decodeここで、デフォルトで stdClass のインスタンスを返すことに注意することが重要です。json_decode($jsonstring, true)JSON を PHP 連想配列として返すために使用してみてください。

ただし、$this->revision()メソッドの機能は含まれていません。それが戻り値を取得している関数であるため、コードのその部分を表示できますか?

編集:

よし、あなたのコードで適切な関数を見た後、私が言いたいことがいくつかあります:

  • メソッドに$return パラメーターを追加しましたrevisionが、必要なときに使用していません。メソッドでに変更する必要が$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 に答える
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 に答える
0

おそらく、その json 出力を php 配列 (json_decode() 関数) に変換する必要があり、array_pop() 関数で最後の項目を取得できます: https://php.net/array_pop

于 2012-12-07T19:56:41.700 に答える