gpt4 book ai didi

php - Codeigniter-如何将不同大小的数组插入数据库

转载 作者:行者123 更新时间:2023-11-29 02:43:06 24 4
gpt4 key购买 nike

我想在表“项目”中插入数据。我有两个不同大小的数组,它们是

$advisor_id = array(
'id' =>1
'id' =>2
'id' =>3
);


$project_id = array(
'pid'=>1
'pid'=>2
'pid'=>3
'pid'=>4
);

我的代码是:

$advisors = count($this->input->post('advisor_id[]'));   
$PM_ids = count($this->input->post('PM_id[]'));
if($advisors > $PM_ids){
$count = $advisors;
}else{
$count = $PM_ids;
}

$data[] = array();
for($i =0; $i<$count ; $i++){
$data = array(
'advisor_id' =>$this->input->post('advisor_id')[$i],
'PM_id' =>$this->input->post('PM_id')[$i],
);
//print_r($data);
$this->db->insert_batch('project_config',$data);
}

我的问题是数组的大小不同。如何插入数据库。

最佳答案

如果您愿意在缺少的地方提交 NULL 值,array_map() 是完成这项工作的最佳工具。

首先一般性演示当发生数组大小不匹配时如何/在何处生成 NULL 元素...

代码:(Demo)

$advisor_id=['id1'=>1,'id2'=>2,'id3'=>3];
$project_id=['pid1'=>1,'pid2'=>2,'pid3'=>3,'pid4'=>4];
$data=array_map(function($id,$pid){return ['advisor_id'=>$id,'PM_id'=>$pid];},$advisor_id,$project_id);
var_export($data); // see how NULL elements are formed in the output array

输出:

array (
0 =>
array (
'advisor_id' => 1,
'PM_id' => 1,
),
1 =>
array (
'advisor_id' => 2,
'PM_id' => 2,
),
2 =>
array (
'advisor_id' => 3,
'PM_id' => 3,
),
3 =>
array (
'advisor_id' => NULL,
'PM_id' => 4,
),
)

上面的多维数组现在已经为单个insert_batch()做好了充分的准备称呼。 重要 CodeIgniter 的insert_batch() 专门设计用于一次插入多行数据——在循环内使用此调用会破坏进行此调用的目的。

至于你的实际实现,这应该可行(我不在 CodeIgniter 中编写代码):

$data=array_map(function($id,$pid){return ['advisor_id'=>$id,'PM_id'=>$pid];},$this->input->post('advisor_id'),$this->input->post('PM_id'));
$this->db->insert_batch('project_config',$data);

干净并完成:没有 for 循环,没有 $i 计数器,只有一次对数据库的调用。

关于php - Codeigniter-如何将不同大小的数组插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47434539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com