如何在PHP中合并数组值?

7

我有数组1

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
        )

)

还有数组2:

Array
(
    [0] => Array
        (
            [valuator1] => Wulan  Lastia Permana
        )
)

我想将一个数组中的值合并到另一个数组中。我希望得到以下结果:
Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
            [valuator1] => Wulan  Lastia Permana
        )
)

“像这样加入”是可能的吗?
4个回答

12

你需要使用array_replace_recursive函数:

<?php

$arr1 = Array
(
     Array
        (
            "recomendation_id" => 3588,
            "employee_id" => 90141063,
            "attendance_type_id" => 2,
            "start_dtm" => "2016-05-17 10:32:00",
            "end_dtm" => "",
            "request_message" => "test notif",
            "recomendation_status_id" => 1,
            "last_update_dtm" => "2016-05-17 10:32:43",
            "employee_name" => "Nike Yulistia Angreni",
            "attd_type_name" => "Permittance",
            "status_name" => "Request"
        )

);
$arr2 = Array
(
    Array
        (
            "valuator1" => "Wulan  Lastia Permana"
        )
);

print_r(array_replace_recursive($arr1,$arr2));

结果:

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
            [valuator1] => Wulan  Lastia Permana
        )

)
您的 Eval
如果您使用array_merge_recursive,则您的输出将是:
Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
        )

    [1] => Array
        (
            [valuator1] => Wulan  Lastia Permana
        )

)

有趣。我不知道这些函数。array_replace_recursive 不会覆盖旧值吗?还是它也可以添加新值? - Peter
@Peter array_replace_recursive会替换旧值。 - Thamilhan
@NikeYulistiaAngreni 欢迎! - Thamilhan

2

3
以上的输出结果与期望的不同。 - Ali
array_merge_recursive 会将值添加到不同的子数组中。 - Peter

0

是的,这是可能的。让你的第一个数组是$arr1,第二个数组是$arr2

只需为您的第一个数组分配一个新字段,您的第一个数组将使用第二个数组的键值对进行更新。

$arr1[0]['valuator1'] = $arr2[0]['valuator1'];

print_r($arr1);

结果:

Array
(
    [0] => Array
        (
            [recomendation_id] => 3588
            [employee_id] => 90141063
            [attendance_type_id] => 2
            [start_dtm] => 2016-05-17 10:32:00
            [end_dtm] => 
            [request_message] => test notif
            [recomendation_status_id] => 1
            [last_update_dtm] => 2016-05-17 10:32:43
            [employee_name] => Nike Yulistia Angreni
            [attd_type_name] => Permittance
            [status_name] => Request
            [valuator1] => Wulan  Lastia Permana
        )

)

0

在我看来,这不是最佳选择,但它仍然可以解决你的问题。

foreach ($arr2 as $k => $v) {
    $arr1[$key] = array_merge($arr1[$key], $v);
}

这将循环遍历第二个数组,并将每个值与第一个数组合并。

注意:为使此操作正常工作,您的数组键应在两个数组中相同。


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