Я пытаюсь вернуть данные 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++; }