在codeigniter中将对象添加到现有数组

时间:2016-11-10 10:42:18

标签: php arrays codeigniter

在我的模型中,有两个函数可以从数据库中获取数据。两者都将数据作为对象数组返回。下面给出了一个函数。

public function get_camaramens($data,$evdata)
{
$this->db->select('emp_position.employee_id');
$this->db->from('emp_position');
$this->db->where('emp_position.position','c');
$this->db->where('emp_position.employee_id NOT IN ('.implode(",",$data).')');
$query=$this->db->get('',$evdata);
return $query->result();
}

在我的控制器中,我接受以下结果。

$sdata['camaramen_list']    = $this->emp_position_model>get_camaramens($data,$evdata['no_of_cams']);

模型中的其他功能是

public function get_camara_assistants($data,$sdata,$evdata)
{
$cdata = array();
foreach($sdata['camaramen_list'] as $row) {
$cdata[] = $row->employee_id;
}

$this->db->select('emp_position.employee_id');
$this->db->from('emp_position');
$this->db->where('emp_position.position','ca');
$this->db->where('emp_position.employee_id NOT IN ('.implode(", ",$data).')');
$this->db->where('emp_position.employee_id NOT IN ('.implode(", ",$cdata).')');
$query=$this->db->get('',$evdata);
return $query->result();
}

在我的控制器中,我想将上述函数的结果添加到同一个对象数组$ sdata中。但如果我把如下相同的名称替换为前一个数组。

$sdata['camaramen_list']    = $this->emp_position_model->get_camara_assistants($data,$sdata,$evdata['no_of_cams']);

请有人告诉我正确的方法。

4 个答案:

答案 0 :(得分:1)

尝试理解基本概念:

$sdata['new']['one'] = 'Some other value'; 

我想在该数组中再添加一个值,我这样做:

$scope.wakeup = function() {
    $http.get('getTimings').then(function() {
    }
}

//此值会覆盖旧值,因为您要在同一索引上添加值,这将覆盖已存在的值。

所以这样做:

{{1}}

添加新值,例如:

{{1}}

在这种情况下,有两个差异索引旧,一个。所以这里没有覆盖。

或将其保存在某些差异索引上。

答案 1 :(得分:0)

如果两个结果都是数组,则可以使用array_merge将一个或多个数组合并为一个新数组。

$sdata['camaramen_list'] = array_merge(
    $this->emp_position_model->get_camaramens($data,$evdata['no_of_cams']),
    $this->emp_position_model->get_camara_assistants($data,$sdata,$evdata['no_of_cams']);
);

var_dump($sdata['camaramen_list']);//the new array

答案 2 :(得分:0)

如果使用相同的变量,则可以覆盖。有两种方法可以做到。

    控制器中的
  1. array_merge

    您可以按array_merge合并两个数组。

    $result1 = $this->emp_position_model>get_camaramens($data,$evdata['no_of_cams']);
    $result2 = $this->emp_position_model->get_camara_assistants($data,$sdata,$evdata['no_of_cams']);
    
    $combined_result = array_merge($result1, $result2);
    

  2. UNION选择Model

    $this->db->select('emp_position.employee_id');
    $this->db->from('emp_position');
    $this->db->where('emp_position.position','c');
    $this->db->where('emp_position.employee_id NOT IN ('.implode(",",$data).')');
    
    $compiled_1 = $this->db->get_compiled_select();
    
    
    $this->db->select('emp_position.employee_id');
    $this->db->from('emp_position');
    $this->db->where('emp_position.position','ca');
    $this->db->where('emp_position.employee_id NOT IN ('.implode(", ",$data).')');
    $this->db->where('emp_position.employee_id NOT IN ('.implode(", ",$cdata).')');
    
    $compiled_2 = $this->db->get_compiled_select();
    
    
    $query = $this->db->query('( ' .$compiled_2 .' ) UNION ALL ( '. $compiled_1 .' );' );
    
  3. 如果您想创建新索引,可以使用$sdata['camaramen_list']['one']$sdata['camaramen_list']['two']。否则,请改用我的方式。

    希望这会有所帮助。

答案 3 :(得分:0)

试试这个

$data['data1']= $this->emp_position_model->get_camaramens($data,$evdata['no_of_cams']);
$data2['data2']= $this->emp_position_model->get_camara_assistants($data,$sdata,$evdata['no_of_cams']);
$sdata['camaramen_list']=array_merge($data,$data2);

$this->load->view('your_view_page',$sdata['camaramen_list'] );