Есть 2 массива. Первый содержит свободные промежутки времени. Второй задачи и их длительность.
Необходимо с максимальной эффективностью задать каждому промежутку времени свои/свою задачу.
<?php
$periods = [
[
'start' => \DateTime::createFromFormat(
'Y-m-d H:i:s', '2018-02-17 10:00:00'
),
'end' => \DateTime::createFromFormat(
'Y-m-d H:i:s', '2018-02-17 12:00:00'
),
],
[
'start' => \DateTime::createFromFormat(
'Y-m-d H:i:s', '2018-02-17 15:00:00'
),
'end' => \DateTime::createFromFormat(
'Y-m-d H:i:s', '2018-02-17 17:00:00'
),
],
[
'start' => \DateTime::createFromFormat(
'Y-m-d H:i:s', '2018-02-17 21:00:00'
),
'end' => \DateTime::createFromFormat(
'Y-m-d H:i:s', '2018-02-17 22:00:00'
),
],
// ...etc
];
$events = [
[
'name' => 'even1',
'duration' => 30,
],
[
'name' => 'even2',
'duration' => 210,
],
[
'name' => 'even3',
'duration' => 150,
],
[
'name' => 'even4',
'duration' => 30,
],
[
'name' => 'even5',
'duration' => 120,
],
[
'name' => 'even5',
'duration' => 160,
],
// ...etc
];