首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向现有数组添加新的键值

向现有数组添加新的键值
EN

Stack Overflow用户
提问于 2018-10-15 17:01:48
回答 3查看 73关注 0票数 0

我有两个数组。我想将第二个数组的值作为键值添加到第一个数组中。这是我的数组

//Main数组

代码语言:javascript
复制
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数组

代码语言:javascript
复制
Array
(
    [0] => 3
    [1] => 4
)

//期望的结果

代码语言:javascript
复制
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
        )
)

我到目前为止所尝试的

代码语言:javascript
复制
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是我添加的第一个数组的结果

EN

回答 3

Stack Overflow用户

发布于 2018-10-15 17:16:17

为什么不直接迭代你的数组呢?

代码语言:javascript
复制
foreach ($main as &$item) {
    $item['amc'] = array_shift($mos);
}
unset($item);

array_shift只会从$mos数组中删除第一项,并添加到$main的每次迭代中。

请注意,我使用与号&创建了一个引用,因此,我还取消了该项的设置,这样就不会有挂起的引用。

票数 0
EN

Stack Overflow用户

发布于 2018-10-15 17:17:28

对于这一点,一个foreach会非常快。

以下是一个示例,简化版本:

代码语言:javascript
复制
// 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;

结果是:

代码语言:javascript
复制
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)
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-15 17:18:19

试试下面的代码:

代码语言:javascript
复制
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]]);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52813123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档