Php Codeigniter重构查询输出数组以插入到另一个表中

Php Codeigniter重构查询输出数组以插入到另一个表中,php,mysql,arrays,codeigniter,object,Php,Mysql,Arrays,Codeigniter,Object,在完成临时成本核算详细信息临时表中的数据处理后,我必须将该数据插入永久成本核算详细信息表中的一行,并添加一些列值。costing_detail表具有与costing_detail_temp相同的列以及一些附加列。因此,我必须做以下工作: 在成本核算\详细信息\临时表中运行查询并选择一行, 在返回的数组中添加一些键值对, 插入成本核算详细信息。 下面是我的模型的代码: function add_new_detail($Temp_id) { $loggedUserID = $

在完成临时成本核算详细信息临时表中的数据处理后,我必须将该数据插入永久成本核算详细信息表中的一行,并添加一些列值。costing_detail表具有与costing_detail_temp相同的列以及一些附加列。因此,我必须做以下工作:

在成本核算\详细信息\临时表中运行查询并选择一行, 在返回的数组中添加一些键值对, 插入成本核算详细信息。 下面是我的模型的代码:

function add_new_detail($Temp_id) { $loggedUserID = $this->session->userdata('id_user'); $added_on = date('Y-m-d H:i:s'); $added_date = date('Y-m-d'); $ip = $this->input->ip_address(); $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id; $query = $this->db->query($qry); $data_item_list = $query->result(); $additional_data = array( 'added_by' =>$loggedUserID, 'added_on' =>$added_on, 'added_date' =>$added_date, 'operation_ip' =>$ip ); //push the array $additional_data in $data_item_list array_push($data_item_list, $additional_data); //********** //insert a row with the combined array $this->db->insert('costing_detail', $data_item_list); return $data_item_list; } 这将返回以下数组:

Array ( [0] => stdClass Object ( [Temp_id] => 20160300101 [Quotation_id] => 201603001 [item_name] => BYA :3x 3 re (3-w) Red [item_id] => 0 [Item_Specification] => core=3, wire=3, insulation=pvc, dia=3mm, color=red [Required_Quantity] => 3.00 ) [1] => Array ( [added_by] => 12 [added_on] => 2016-04-04 12:15:47 [added_date] => 2016-04-04 [operation_ip] => 127.0.0.1 ) ) 但是,我需要这样的东西:

Array ( [0] => stdClass Object ( [Temp_id] => 20160300101 [Quotation_id] => 201603001 [item_name] => BYA :3x 3 re (3-w) Red [item_id] => 0 [Item_Specification] => core=3, wire=3, insulation=pvc, dia=3mm, color=red [Required_Quantity] => 3.00 [added_by] => 12 [added_on] => 2016-04-04 12:15:47 [added_date] => 2016-04-04 [operation_ip] => 127.0.0.1 ) ) 如何实现这一点?

试试这段代码

function add_new_detail($Temp_id)
{
    $loggedUserID = $this->session->userdata('id_user');
    $added_on = date('Y-m-d H:i:s');
    $added_date = date('Y-m-d');    
    $ip = $this->input->ip_address();
    $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
    $query = $this->db->query($qry);
    $data_item_list = $query->result_array(); // result as an array
    // add additional data
    foreach ($data_item_list as $key => $item) 
    {
        $data_item_list[$key]['added_by'] = $loggedUserID;
        $data_item_list[$key]['added_on'] = $added_on;
        $data_item_list[$key]['added_date'] = $added_date;
        $data_item_list[$key]['operation_ip'] = $operation_ip;
    }
    //insert a row with the combined array
    $this->db->insert('costing_detail', $data_item_list);
    return $data_item_list;
}
试试这个代码

function add_new_detail($Temp_id)
{
    $loggedUserID = $this->session->userdata('id_user');
    $added_on = date('Y-m-d H:i:s');
    $added_date = date('Y-m-d');    
    $ip = $this->input->ip_address();
    $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
    $query = $this->db->query($qry);
    $data_item_list = $query->result_array(); // result as an array
    // add additional data
    foreach ($data_item_list as $key => $item) 
    {
        $data_item_list[$key]['added_by'] = $loggedUserID;
        $data_item_list[$key]['added_on'] = $added_on;
        $data_item_list[$key]['added_date'] = $added_date;
        $data_item_list[$key]['operation_ip'] = $operation_ip;
    }
    //insert a row with the combined array
    $this->db->insert('costing_detail', $data_item_list);
    return $data_item_list;
}
尝试使用foreach获得想要的结果,并将其插入数组,如下面的示例所示:

function add_new_detail($Temp_id)
        {
            $loggedUserID = $this->session->userdata('id_user');
            $added_on = date('Y-m-d H:i:s');
            $added_date = date('Y-m-d');    
            $ip = $this->input->ip_address();
            $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
            $query = $this->db->query($qry);

            $data_itemlist = array();

            foreach ($query->result() as $dat) {
                foreach ($dat as $key => $value) {
                    $data_itemlist[$key] = $value;
                }
                $data_itemlist['added_by'] = $loggedUserID;
                $data_itemlist['added_on'] = $added_on;
                $data_itemlist['added_date'] = $added_date;
                $data_itemlist['operation_ip'] = $ip;
            }

            $this->db->insert('costing_detail', $data_itemlist);
            return $data_itemlist;
        }
输出

尝试使用foreach获得想要的结果,并将其插入数组,如下面的示例所示:

function add_new_detail($Temp_id)
        {
            $loggedUserID = $this->session->userdata('id_user');
            $added_on = date('Y-m-d H:i:s');
            $added_date = date('Y-m-d');    
            $ip = $this->input->ip_address();
            $qry = "SELECT * FROM costing_detail_temp WHERE Temp_id = ".$Temp_id;
            $query = $this->db->query($qry);

            $data_itemlist = array();

            foreach ($query->result() as $dat) {
                foreach ($dat as $key => $value) {
                    $data_itemlist[$key] = $value;
                }
                $data_itemlist['added_by'] = $loggedUserID;
                $data_itemlist['added_on'] = $added_on;
                $data_itemlist['added_date'] = $added_date;
                $data_itemlist['operation_ip'] = $ip;
            }

            $this->db->insert('costing_detail', $data_itemlist);
            return $data_itemlist;
        }
输出


返回$data\u项目\u列表;未定义,请将其重命名为$data\u itemlistreturn$data\u item\u list;未定义,请将其重命名为$data\u ItemListThank,这也可以工作:,这将新元素放入数组,而不是在选定的应答中创建新数组谢谢,这也可以工作:,这将新元素放入数组,而不是在选定的应答中创建新数组