所以这很奇怪。我有两个阵列一个阵列是事件列表。如果没有事件,则只有零。另一个数组计算等于0的项目数量。基本上我不知道的是如何根据第二个数组调整第一个数组。
我想创建一个数组,该数组在第一个空白后删除了一些空的数组,然后重写值以说出不同的内容...类似这样。我想重写,因此它可以抓住一个通用标题和事件时间,并根据0的第一点和最后一个零值开始。
基本上我必须这样做的原因是我们正在尝试使用客户端API进行时间表制作。问题是他们使用的API不适用于他们想要显示的开放时间插槽。因此,我要做的是循环浏览它们打开的小时数,根据事件时间添加事件,然后在事件之间创建空白事件。问题是我很难创建空白事件。
谢谢!我不是最好的PHP开发人员,我实际上有一个同事帮助我这么远,我只是无法弄清楚如何/什么功能来实现这一目标。
理想的数组
IdealArray
(
[0600] => Array
(
[e_name] => No events
[e_start] => 6000
[e_end] => 1000
)
[1000] => Array
(
[e_name] => Event One
[e_start] => 1000
[e_end] => 1100
)
[1100] => Array
(
[e_name] => No events
[e_start] => 1000
[e_end] => 1630
)
[1630] => Array
(
[e_name] => Event Number 2
[e_start] => 1630
[e_end] => 0930
)
[0930] => Array
(
[e_name] => No events
[e_start] => 0930
[e_end] => 1100
)
)
当前数组
First Array
(
[0600] => 0
[0630] => 0
[0700] => 0
[0730] => 0
[0800] => 0
[0830] => 0
[0900] => 0
[0930] => 0
[1000] => Array
(
[e_name] => Event One
[e_start] => 1000
[e_end] => 1100
)
[1100] => 0
[1130] => 0
[1200] => 0
[1230] => 0
[1300] => 0
[1330] => 0
[1400] => 0
[1430] => 0
[1500] => 0
[1530] => 0
[1600] => 0
[1630] => Array
(
[e_name] => Event Number 2
[e_start] => 1630
[e_end] => 1930
)
[1930] => 0
[2000] => 0
[2030] => 0
[2100] => 0
[2130] => 0
[2200] => 0
[2230] => 0
)
Second Array
(
[0] => 8
[1] => 11
[2] => 7
)
给定问题中提供的源数组(以下命名为$First_Array
),并假设它始终按时间顺序排列:
$start_time = ''; // keep track of "no event" starts
$summary = array(); // array for event summary
foreach ( $First_Array as $time => $event ) {
if ( '' === $start_time ) { // empty string means new start
$start_time = $time;
$summary[$start_time] = array(
'e_name' => 'No events', 'e_start' => $start_time, 'e_end' => ''
);
}
if ( is_array($event) ) { // array means there's an event
$summary[$start_time]['e_end'] = $time; // end last 'no events'
$summary[$time] = $event; // add event to summary
$start_time = ''; // reset start
}
}
$summary[$start_time]['e_end'] = $time; // get last end time
print_r($summary);
如果不能保证订单,则只需以关键排序开始:ksort($First_Array)
php沙盒示例