我有两个数组。我想将第二个数组的值作为键值添加到第一个数组中。这是我的数组
//Main数组
Array
(
[0] => Array
(
[commodity] => Abacavir (ABC) 300mg Tabs
[allocated] =>
[balance] => 1388
[mos] => 3
[year] => 2018
[month] => May
[drug_id] => 1
[data_date] => 2018-05-01
)
[1] => Array
(
[commodity] => Abacavir/Lamivudine (ABC/3TC) 120/60mg FDC Tabs
[allocated] =>
[balance] => 1185
[mos] => 26
[year] => 2018
[month] => May
[drug_id] => 4
[data_date] => 2018-05-01
)
)//MOS数组
Array
(
[0] => 3
[1] => 4
)//期望的结果
Array
(
[0] => Array
(
[commodity] => Abacavir (ABC) 300mg Tabs
[allocated] =>
[balance] => 1388
[mos] => 3
[year] => 2018
[month] => May
[drug_id] => 1
[data_date] => 2018-05-01
[amc] => 3
)
[1] => Array
(
[commodity] => Abacavir/Lamivudine (ABC/3TC) 120/60mg FDC Tabs
[allocated] =>
[balance] => 1185
[mos] => 26
[year] => 2018
[month] => May
[drug_id] => 4
[data_date] => 2018-05-01
[amc] => 4
)
)我到目前为止所尝试的
foreach ($sub_res as $key => $res) {
$query2 = $this->db->query("SELECT $amcfunction($drug_id,$no_of_mos,'$date'$amc) amc")->result_array();
$sub_res[$key]['amc'] = $query2[0]['amc'];
}这样,它只是将amc附加到最后一个数组。有什么建议吗?$sub_res是我添加的第一个数组的结果
发布于 2018-10-15 17:16:17
为什么不直接迭代你的数组呢?
foreach ($main as &$item) {
$item['amc'] = array_shift($mos);
}
unset($item);array_shift只会从$mos数组中删除第一项,并添加到$main的每次迭代中。
请注意,我使用与号&创建了一个引用,因此,我还取消了该项的设置,这样就不会有挂起的引用。
发布于 2018-10-15 17:17:28
对于这一点,一个foreach会非常快。
以下是一个示例,简化版本:
// simplified main array
$main[] = array('commodity' => 'Abacavir (ABC) 300mg Tabs');
$main[] = array('commodity' => 'Abacavir/Lamivudine (ABC/3TC) 120/60mg FDC Tabs');
// MOS Array
$mos = array(3,4);
foreach($mos as $k => $v) {
$main[$k]['amc'] = $v;
}
echo '<pre>';
var_dump($main);
echo '</pre>';
exit;结果是:
array(2) {
[0]=> array(2) {
["commodity"]=> string(25) "Abacavir (ABC) 300mg Tabs"
["amc"]=> int(3)
}
[1]=> array(2) {
["commodity"]=> string(47) "Abacavir/Lamivudine (ABC/3TC) 120/60mg FDC Tabs"
["amc"]=> int(4)
}
}发布于 2018-10-15 17:18:19
试试下面的代码:
foreach ($sub_res as $key => $res) {
$query2 = $this->db->query("SELECT $amcfunction($drug_id,$no_of_mos,'$date'$amc) amc")->result_array();
$sub_res[$key] = array_merge($res, ['amc' => $query2[0]]);
}https://stackoverflow.com/questions/52813123
复制相似问题