我将此数组从我的角度传递给PHP
0 =>
array (size=10)
'id' => string '3' (length=1)
'vendor' =>
array (size=1)
'selected' =>
array (size=2)
'vendor' => 'A'
'id' => '5'
1 =>
array (size=10)
'id' => string '4' (length=1)
'vendor' =>
array (size=1)
'selected' =>
array (size=2)
'vendor' => 'B'
'id' => '7'
2 =>
array (size=10)
'id' => string '5' (length=1)
'vendor' =>
array (size=1)
'selected' =>
array (size=2)
'vendor' => 'B'
'id' => '7'
我想要做的是根据vendor_id对数组数据进行排序,然后将其插入到我的数据库中。因此,通过给定上述数据,供应商A具有1个项目,供应商B具有2个项目
浏览互联网很长一段时间后,我发现我可以使用以下代码
if(count($products) > 0){
foreach($products as $data){
$input[$data['vendor']['selected']['id']][] = $data;
}
}
并且新创建的输入数组将类似于
5 =>
array (size=1)
0 =>
array (size=10)
'id' => string '3' (length=1)
'vendor' =>
array (size=1)
...
7 =>
array (size=2)
0 =>
array (size=10)
'id' => string '4' (length=1)
'vendor' =>
array (size=1)
...
1 =>
array (size=10)
'id' => string '5' (length=1)
'vendor' =>
array (size=1)
...
然后我循环输入数组,这样我就可以将数据插入到我的db
中 //Sample data
$i = 0;
foreach($input as $d){
$param = array(
"po_number" => $purchase_number
"grand_total" => $d[$i]['total_price']
);
$this->_model->add($param); // add into the purchase order table
$insert_id = $this->db->insert_id();
$products_array[] = array(
"purchase_order_id" => $insert_id,
);
foreach($products_array as $prod){
$this->_detail_model->add($prod); // add into the purchase order detail table
}
}
但是,我发现上面的代码无法正常工作。通过给出上面的数组示例,Vendor with 1 item,将被插入到db两次,而有2个item的vendor将只插入一次。我不知道出了什么问题,但我觉得foreach $ input数组以某种方式循环,缺少某些东西。有人可以帮我做什么吗?
基本上我想做一个采购订单和采购订单明细。通过上面的示例,将有2个采购订单,1个采购订单和1个采购订单明细,以及1个采购订单和2个采购订单详细信息
谢谢:)