1

後でそのjsonをjavascriptで使用するcodeigniterを使用してjsonデータを返そうとしています。問題は、データベース テーブルから最後の行のみを返し、その 1 行から json 形式を作成することです。これがコントローラーの私のコードです

public function v1 () {
    $this->load->model('model_jokes');

    $jokes = $this->model_jokes->readJokes();
    foreach ($jokes as $joke) {
        $arr = array(
                array(
                    'title' => $joke->title,
                    'description' => $joke->joke
                )
            );
    }
    echo json_encode($arr);
}

データベースから取得しているすべてのデータがjsonで返されるようにするにはどうすればよいですか?

4

4 に答える 4

2

試す

$arr = array();
foreach ($jokes as $joke) {
  $arr[] = array (
    'title' => $joke->title,
    'description' => $joke->joke
  );
}

スニペット$arrでは、ループ内の各反復で上書きしています。

この投稿の上記のスニペットは、$arr後で json にエンコードできるすべてのエントリを配列に追加します。

于 2012-10-31T06:32:08.900 に答える
2

$arr値を追加するのではなく、反復ごとに新しい配列に割り当てています。

$arr = array();
foreach ($jokes as $joke) {
    $arr[] =  array(
                'title' => $joke->title,
                'description' => $joke->joke
            );
}
于 2012-10-31T06:32:25.367 に答える
2

あなたのコントローラは正しくありません...

//CONTROLLER
    public function v1() {

    $this->load->helper('file');

    $data = $this->load->model('model_jokes');

    $this->output
        ->set_content_type('application/json')
        ->set_output(json_encode($data));
}

そして、モデルがコントローラーではなく配列を作成したことを確認してください。

public function model_jokes()
{
    $jokes = $this->_load_data();
    $list = array();

        foreach ($jokes as $joke) {
            $list['joke'] = array(
                'yourdata1' => $joke->yourvariable,
                'yourdata2' => $joke->yourvariable
            );
        }
        return $list;
}

モデル内でプライベート関数を使用してすべてのデータを取得しました。

それが役に立てば幸い!

于 2012-11-27T13:14:25.887 に答える
0

私はいつものようにしています..

 $arr = array();
 $key = 0;
 foreach ($jokes as $joke) 
 {
   $arr[$key]['title'] = $joke->title;
   $arr[$key]['description'] = $joke->joke;
   $key++;
 }
于 2012-10-31T08:44:22.450 に答える