Только последняя строка возвращается в json с помощью codeigniter

Я пытаюсь вернуть данные json с помощью codeigniter, который позже я буду использовать json в javascript. Теперь проблема в том, что она возвращает только последнюю строку из таблицы базы данных и делает формат 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?

Пытаться

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

В вашем фрагменте вы переписываете $arr с каждой итерацией в своем цикле.

Вышеприведенный фрагмент в этом сообщении добавит все записи в массив $arr который позже вы можете кодировать в json.

Вы назначаете $arr новому массиву на каждую итерацию, а не добавляете к нему значения.

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

Ваш контроллер не прав …

 //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; } 

Я использовал частную функцию в модели для получения всех данных.

Надеюсь, поможет!

Я всегда делаю, как ..

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