PHP:合并多维数组替换值
我正在尝试根据day_id将以下两个数组合并在一起。如果第二个数组中的数据与数组1中的day_id相同,请将其替换 从当前日期开始的天数数组:PHP:合并多维数组替换值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我正在尝试根据day_id将以下两个数组合并在一起。如果第二个数组中的数据与数组1中的day_id相同,请将其替换 从当前日期开始的天数数组: Array ( [0] => Array ( [day] => Tuesday [open] => 06:00:00 [close] => 15:00:00 [day_id] => 3 ) [1] => Array ( [day] => Wednesday
Array (
[0] => Array (
[day] => Tuesday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 3
)
[1] => Array (
[day] => Wednesday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 4
)
[2] => Array (
[day] => Thursday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 5
)
[3] => Array (
[day] => Friday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 6
)
[4] => Array (
[day] => Saturday
[open] =>
[close] =>
[day_id] => 7
)
[5] => Array (
[day] => Sunday
[open] =>
[close] =>
[day_id] => 1
)
[6] => Array (
[day] => Monday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 2
)
)
要与上一个数组合并的数组数据
Array (
[0] => Array (
[day] => Saturday
[open] => 07:00:00
[close] => 15:00:00
[day_id] => 7
)
[1] => Array (
[day] => Friday
[open] => 07:00:00
[close] => 15:00:00
[day_id] => 6
)
)
我试图得到的结果是:
Array (
[0] => Array (
[day] => Tuesday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 3
)
[1] => Array (
[day] => Wednesday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 4
)
[2] => Array (
[day] => Thursday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 5
)
[3] => Array (
[day] => Friday
[open] => 07:00:00
[close] => 15:00:00
[day_id] => 6
)
[4] => Array (
[day] => Saturday
[open] => 07:00:00
[close] => 15:00:00
[day_id] => 7
)
[5] => Array (
[day] => Sunday
[open] =>
[close] =>
[day_id] => 1
)
[6] => Array (
[day] => Monday
[open] => 06:00:00
[close] => 15:00:00
[day_id] => 2
)
)
我尝试过使用array\u replace\u recursive($storeArray,$overridearlay)代码>但是,它仅基于索引编号进行合并。使用两个查询从数据库中提取所有数据
谢谢你的帮助 试试这个:
// $original = array with original values
// $override = array with values to override
// $combined = merge result
$combined = array_map(
function($day) use ($override) {
foreach ($override as $newDay) {
if ($day['day_id'] == $newDay['day_id']) {
return $newDay;
}
}
return $day;
}, $original
);
。。。或直接修改$original
:
array_walk($original,
function(&$day) use ($override) {
foreach ($override as $newDay) {
if ($day['day_id'] == $newDay['day_id']) {
$day = $newDay;
}
}
}
);