我已经查看了其他类似的问题,但找不到与我正在尝试执行的操作相匹配的问题。合并/覆盖一个数组中的值与另一个数值
我有2个数组,有不同的键和不同的长度。我需要用第二个值更新一个数组的值。第二个数组的长度是可变的,它没有设置为特定的数字。
$times = [
[ 'time' => '00:00', 'status' => 'unset' ],
[ 'time' => '01:00', 'status' => 'unset' ],
[ 'time' => '02:00', 'status' => 'unset' ],
[ 'time' => '03:00', 'status' => 'unset' ],
[ 'time' => '04:00', 'status' => 'unset' ],
[ 'time' => '05:00', 'status' => 'unset' ],
[ 'time' => '06:00', 'status' => 'unset' ],
[ 'time' => '07:00', 'status' => 'unset' ],
[ 'time' => '08:00', 'status' => 'unset' ],
[ 'time' => '09:00', 'status' => 'unset' ],
[ 'time' => '10:00', 'status' => 'unset' ],
[ 'time' => '11:00', 'status' => 'unset' ],
[ 'time' => '12:00', 'status' => 'unset' ],
[ 'time' => '13:00', 'status' => 'unset' ],
[ 'time' => '14:00', 'status' => 'unset' ],
[ 'time' => '15:00', 'status' => 'unset' ],
[ 'time' => '16:00', 'status' => 'unset' ],
[ 'time' => '17:00', 'status' => 'unset' ],
[ 'time' => '18:00', 'status' => 'unset' ],
[ 'time' => '19:00', 'status' => 'unset' ],
[ 'time' => '20:00', 'status' => 'unset' ],
[ 'time' => '21:00', 'status' => 'unset' ],
[ 'time' => '22:00', 'status' => 'unset' ],
[ 'time' => '23:00', 'status' => 'unset' ],
];
$times
是我需要更新的,$times
的值将总是具有(在一天24小时右)24的索引的数组。其他阵列$slots
会是这个样子(我修剪下来的简洁)
$slots = [
[
'id' => '104',
't_id' => '41',
'u_id' => null,
'status' => 'available',
'start_time' => '2017-08-01 12:00:00',
'end_time' => '2017-08-01 13:00:00',
'update_time' => '0000-00-00 00:00:00',
],
[
'id' => '105',
't_id' => '41',
'u_id' => null,
'status' => 'available',
'start_time' => '2017-08-01 15:00:00',
'end_time' => '2017-08-01 16:00:00',
'update_time' => '0000-00-00 00:00:00',
],
[
'id' => '106',
't_id' => '41',
'u_id' => null,
'status' => 'unavailable',
'start_time' => '2017-08-01 17:00:00',
'end_time' => '2017-08-01 18:00:00',
'update_time' => '0000-00-00 00:00:00',
],
];
行,所以我需要做的,就是更新$times
阵列与$slots
阵列的status
其中$slots
start_time
匹配$times
time
为了获得time
和start_time
匹配,我使用下面的代码
foreach ($slots as $slot) {
$slot_time = new DateTime($slot[ 'start_time' ]);
$slot_time = $slot_time->format('H:i');}
呵呵,我基本上是自己写的,但是因为它不起作用而被删除,结果我错过了&,我给了这个接受的答案,因为它比下面的答案稍快 – virtualLast