Php codeigniter中的json_编码格式

Php codeigniter中的json_编码格式,php,json,codeigniter,model-view-controller,fullcalendar,Php,Json,Codeigniter,Model View Controller,Fullcalendar,使用我现在的代码,我可以从数据库中获得正确的细节,并使用json_encode [{ "tour_id": "1", "tour_name": "Test this", "start": "2016-01-12 13:21:32", "end": "2016-01-15 13:21:35", "itinerary_photo": "Desert.jpg" }][{ "tour_id": "3", "tour_name": "Everes

使用我现在的代码,我可以从数据库中获得正确的细节,并使用json_encode

 [{
    "tour_id": "1",
    "tour_name": "Test this",
    "start": "2016-01-12 13:21:32",
    "end": "2016-01-15 13:21:35",
    "itinerary_photo": "Desert.jpg"
 }][{
    "tour_id": "3",
    "tour_name": "Everest",
    "start": "2016-02-10 13:23:00",
    "end": "2016-02-18 13:23:07",
    "itinerary_photo": "Chrysanthemum.jpg"
}]
预期的JSON提要
我使用json提要向fullcalendar添加事件。我的json_编码结果的格式如下:

[{
    "tour_id": "1",
    "tour_name": "Test this",
    "start": "2016-01-12 13:21:32",
    "end": "2016-01-15 13:21:35",
    "itinerary_photo": "Desert.jpg"
}, {
    "tour_id": "3",
    "tour_name": "Everest",
    "start": "2016-02-10 13:23:00",
    "end": "2016-02-18 13:23:07",
    "itinerary_photo": "Chrysanthemum.jpg"
}]
不同之处在于,对象仅存储在一个数组中。随着im获得的输出,它显示多个数组

以下是我的控制器代码:

public function getBookedCal(){
    if ($this->session->userdata('login')==true){
        $data['twimembers'] = $this->session->userdata('twimembers');
        $data['tour'] = $this->Model_MyBookedTours->getPaidTours($data['twimembers']['user_id']);
        foreach ($data['tour'] as $tourConfirm){
            $tourConfirm = $this->Model_MyBookedTours->getTourInfo($tourConfirm['Tour_packages_tourpkg_id']);
            echo json_encode($tourConfirm);
        }   
        //echo json_encode($tourConfirm); //this outputs only a single array
    }//end if
}//end function
型号:

function getPaidTours($user_id){
    $this->db->where('User_accounts_user_id',$user_id);
    $this->db->where('payment_status','1'); //confirmed
    $query = $this->db->get('user_tourpkg');
    return $query->result_array();
} //calendar

function getTourInfo($tour_id){
    $this->db->select('tour_id,tour_name, start, end, itinerary_photo');
    $this->db->where('tour_id',$tour_id);
    $query = $this->db->get('tour_packages');
    return $query->result();
}

有没有办法通过对代码进行一些调整来获得预期的json提要?

不要使用变量use array,而不要使用foreach值作为赋值

   $tmptourConfirm = array();    
    foreach ($data['tour'] as $tourConfirm){
              $tmptourConfirm[] = $this->Model_MyBookedTours->getTourInfo($tourConfirm['Tour_packages_tourpkg_id']);                            
             }

echo json_encode($tmptourConfirm);

不要使用foreach值作为赋值,而要使用变量use array

   $tmptourConfirm = array();    
    foreach ($data['tour'] as $tourConfirm){
              $tmptourConfirm[] = $this->Model_MyBookedTours->getTourInfo($tourConfirm['Tour_packages_tourpkg_id']);                            
             }

echo json_encode($tmptourConfirm);

您必须在每个循环之前将
$tourConfirm
声明为数组,并在循环之后将该数组编码为json。
例如


}/

您必须在每个循环之前将
$tourConfirm
声明为数组,并在循环之后将该数组编码为json。
例如

}/

更改
getBookedCal()
,如下所示:

public function getBookedCal(){
    $tourConfirm = array();  
    if ($this->session->userdata('login')==true){
        $data['twimembers'] = $this->session->userdata('twimembers');
        $data['tour'] = $this->Model_MyBookedTours->getPaidTours($data['twimembers']['user_id']);
        foreach ($data['tour'] as $tourConfirm){
            $tourConfirm[] = $this->Model_MyBookedTours->getTourInfo($tourConfirm['Tour_packages_tourpkg_id']);

        }   
        //echo json_encode($tourConfirm); //this outputs only a single array
    }//end if
    echo json_encode($tourConfirm);
}//end function
更改
getBookedCal()
,如下所示:

public function getBookedCal(){
    $tourConfirm = array();  
    if ($this->session->userdata('login')==true){
        $data['twimembers'] = $this->session->userdata('twimembers');
        $data['tour'] = $this->Model_MyBookedTours->getPaidTours($data['twimembers']['user_id']);
        foreach ($data['tour'] as $tourConfirm){
            $tourConfirm[] = $this->Model_MyBookedTours->getTourInfo($tourConfirm['Tour_packages_tourpkg_id']);

        }   
        //echo json_encode($tourConfirm); //this outputs only a single array
    }//end if
    echo json_encode($tourConfirm);
}//end function

现在你的问题是什么?你试过
$array3=array\u merge($array1,$array2)
$array1+$array2=$array3?@devpro是否有任何方法可以通过对代码进行一些调整来获得预期的json提要?@Dray知道我从数据库获取json提要,我认为如果在数据库中添加额外的数据,合并单个数组将不起作用。但我明白你的意思@劳雷尔:为什么在向数据库中添加其他数据时它就不起作用了?现在你的问题是什么?你是否尝试过
$array3=array\u merge($array1,$array2)
$array1+$array2=$array3?@devpro是否有任何方法可以通过对代码进行一些调整来获得预期的json提要?@Dray知道我从数据库获取json提要,我认为如果在数据库中添加额外的数据,合并单个数组将不起作用。但我明白你的意思@劳雷尔:为什么在向数据库添加额外数据时,它不起作用?