使用数组合并到一个foreach循环中

6

如果用户的个人资料中有备选信息,我需要将一组新的备选信息合并到循环中。

以下是我的循环:

foreach ($doctor->getVars() as $k => $v)
    {
    $data['doctor_'. $k] = $v;
    }

foreach ($patient->get_data() as $k=>$v)
    {
    if (is_string($v) || is_numeric($v))
        $data["patient_" . $k] = strtoupper($v);
    } 

这是 $data 的 var_dump:

Array
(
    [employee] => person
    [date] => 05/08/2013
    [datetime] => 05/08/2013 9:41:15 AM
    [department] => stuff
    [employee_ext] => 7457
    [employee_email] => 
    [barcode] => *NZS01*
    [doctor_df_code] => 09HQ
    [doctor_npi] => 1111111111
    [doctor_dea] => B4574
    [doctor_upin] => 
    [doctor_license] => 
    [doctor_phone] => (111)111-1111
    [doctor_fax] => (000)000-0000
    [doctor_fname] => UNDEFINED
    [doctor_lname] => UNDEFINED
    [doctor_title] => 
    [doctor_intake_rx_caller_id] => 
    [doctor_costco_rx_caller_id] => 
    [doctor_reorder_rx_caller_id] => 
    [doctor_address1] => 24 CABELL st
    [doctor_address2] => SUITE 10
    [doctor_city] => places
    [doctor_state] => CA
    [doctor_zip] => 91111
    [doctor_active_events] => 
    [doctor_dont_call] => 0
    [doctor_dont_fax] => 1
)

我需要将下面的数组合并到上面的数组中。 这里是函数addr($dfcode)的打印变量:
Array
(
    [0] => Array
        (
            [CODE_] => 09HQ
            [doctor_address1] => alternate addy
            [doctor_address2] => 45854
            [doctor_city] => different city
            [doctor_state] => CA
            [doctor_zip] => 963545
            [doctor_phone] => (619)111-2548
            [doctor_fax] => (157)123-4569
        )

)

我对数组合并很陌生,我假设在$data['doctor_'. $k] = $v之后,我可以列出新的函数和我想要特定合并的字段?

语法是我不确定的:

$data['doctor_'. $k] . array_merge(addr($dfcode))['doctor_address1'] = $v;

任何帮助都将不胜感激,谢谢。

1
当您说要合并此信息时,如果它们具有替代信息,是否意味着您只想从第二个数组合并数据,只有第二个数组包含信息时才这样做?我不完全清楚您在这里的条件是什么。此外,第二个数组中除一个字段之外的所有字段都是第一个数组中字段的副本。您是否正在替换原始数组中的数据?那将与合并不同。 - 2to1mux
是的,仅在第二个数组包含信息时合并第二个数组中的数据。替换原始数组中的数据。 - Head Way
它们将永远存在,可能并不总是有值。 - Head Way
那我非常困惑你需要检查什么。你在帖子中一直提到“信息”,你所说的“信息”是指什么? - 2to1mux
下面我使用foreach循环发布的答案正是您要寻找的。如果第二个数组中不存在键,则不会覆盖第一个数组中的数据。否则,它将会被覆盖。 - 2to1mux
显示剩余3条评论
1个回答

13

合并两个数组的一般公式如下(将 $array_m 合并到 $array_o 中):

foreach($array_m as $key=>$value){ 
    $array_o[$key] = $value;
}

$array_o现在将包含$array_m的所有元素。

编辑:我刚刚注意到你的帖子中似乎想要使用array_merge函数。你也可以采用以下方法:

$array_o = array_merge($array_o, array_m);

是的,array_merge函数正是我认为可以完成这项工作的函数。但我不确定如何在我的循环中将$array_o和array_m进行翻译。 - Head Way
$data = array_merge($data['doctor_'. $k],addr($dfcode)) = $v; 数据 = 合并数组($数据 ['doctor_'. $k], 地址($dfcode)) = $v; - Head Way

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接