基于另一个数组重写数组



所以这很奇怪。我有两个阵列一个阵列是事件列表。如果没有事件,则只有零。另一个数组计算等于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沙盒示例

最新更新