如何使用Json

时间:2017-04-14 06:05:26

标签: php json codeigniter

我在这里做codeigniter,这里有一个数组,在这个数组中 studentAbsentId 我存储在json字符串中,就像这样 [studentAbsentId] => [" 1"" 2"]

  

我的控制器

 public function admin_getabsentlist()
{

    $data = array(
    "schoolId" => $_POST['schoolName'],
    "classId" => $_POST['className'],
    "sectionId" => $_POST['sectionName'],
    "absentDate" => date("Y-m-d", strtotime($_POST['absentDate']))
    );
    $absentresponse= $this->Admin_attendance_model->admin_options_listdisplay($data);
}
  

我的模特

 public function admin_options_listdisplay($params)
{ 
    $this->db->select('*');
    $this->db->where('status !=', '1');
    $this->db->where('schoolId =', $params['schoolId']);
    $this->db->where('classId =', $params['classId']);
    $this->db->where('sectionId =', $params['sectionId']);
    $this->db->where('studentAbsentDate =', $params['absentDate']);
    return $this->db->get('student_absent_list')->result_array();
} 

在我的控制器中打印结果意味着

  

的var_dump($ absentresponse);

    array(1) {
  [0]=>
  array(9) {
    ["absendId"]=>
    string(1) "1"
    ["studentAbsentId"]=>
    string(9) "["1","2"]"
    ["studentAbsentDate"]=>
    string(10) "2017-04-11"
    ["schoolId"]=>
    string(1) "2"
    ["classId"]=>
    string(1) "1"
    ["sectionId"]=>
    string(1) "1"
    ["reg_date"]=>
    string(19) "2017-04-13 01:01:03"
    ["created_by"]=>
    string(29) "kanniyappan@g2evolution.co.in"
    ["status"]=>
    string(1) "0"
  }
}
  

我的预期结果

{
    "status": 1,
    "data": 
    [
    {
      "studentabsentId":"1"
      "studentabsentName":"Kani"
      "studentAbsentDate": "2017-04-12"
    },
    {
      "studentabsentId":"2"
      "studentabsentName":"yuvi"
      "studentAbsentDate": "2017-04-12"
    }
    ]
}

为了获得我的预期答案,我写了这样的代码,

$optionsList = array();
        foreach($absentresponse as $hmres)
        {
            $hmparent['studentabsentId']=json_decode($hmres['studentAbsentId']);
            $hmparent['studentAbsentDate']=$hmres['studentAbsentDate'];
            array_push($optionsList,$hmparent);
        } 


        $return = array("status" => 1, "data" => $optionsList);
        echo json_encode($return);
  

我得到了ouput

  {
  "status": 1,
  "data": [
    {
      "studentabsentId": [
        "1",
        "2"
      ],
      "studentAbsentDate": "2017-04-11"
    }
  ]
}

这不是我预期的结果,请帮助我任何人如何做,为此目的找到 studentAbsentId 名称我已经在我的助手中写了这个功能

  

我的助手

 if ( ! function_exists('getStudentnameById')){
   function getStudentnameById($id){
       $ci =& get_instance();
       $ci->load->database();

       $ci->db->select('firstName');
       $ci->db->where('student_id', $id);
       $q = $ci->db->get('new_student')->result();
       return $q[0]->firstName; // particulart filed
   }
}

2 个答案:

答案 0 :(得分:0)

英语不是我的母语,对不起。

在您的控制器中,您应该使用输入类获取$ _POST数据。 来源Codeigniter documentation

在您的模型中,您可以通过以下方式简化代码:

 public function admin_options_listdisplay($params)
{ 
    return $this->db->select('*')
                    ->where('status !=', '1')
                    ->where('schoolId =', $params['schoolId'])
                    ->where('classId =', $params['classId'])
                    ->where('sectionId =', $params['sectionId'])
                    ->where('studentAbsentDate =', $params['absentDate'])
                    ->get('student_absent_list')
                    ->result_array();
} 

为什么要返回result_array?如果模型正确完成,则只应返回对象类型。

在json中,只有对象被embrace包围,并且它们采用这种形式

{
  'string' : value,
  'string' : value
}

有关详情,请转至json.org

检索此json的目的是什么?

我认为,你应该在缺席的情况下返回学生对象。

答案 1 :(得分:0)

只需将您的$ absentresponse添加到您的数组中。

echo json_encode(array("status"=>true, "data"=>$absentresponse));

你不需要做其他事......