我正在尝试使用codeigniter返回json数据,稍后我将在javascript中使用json。现在的问题是它只返回数据库表中的最后一行,并从该行创建一个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格式返回?
答案 0 :(得分:2)
尝试
$arr = array();
foreach ($jokes as $joke) {
$arr[] = array (
'title' => $joke->title,
'description' => $joke->joke
);
}
在您的代码段中,您将在循环中的每次迭代中覆盖$arr
。
此帖子中的上述片段会将所有条目附加到数组$arr
,稍后您可以将其编码为json。
答案 1 :(得分:2)
您每次迭代都会为新数组分配$arr
,而不是为其添加值。
$arr = array();
foreach ($jokes as $joke) {
$arr[] = array(
'title' => $joke->title,
'description' => $joke->joke
);
}
答案 2 :(得分: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;
}
我在模型中使用私有函数来获取所有数据。
希望它有所帮助!
答案 3 :(得分:0)
我总是喜欢..
$arr = array();
$key = 0;
foreach ($jokes as $joke)
{
$arr[$key]['title'] = $joke->title;
$arr[$key]['description'] = $joke->joke;
$key++;
}