Php 基于另一个数组重写数组
所以这是一个奇怪的问题。我有两个数组,一个数组是事件列表。如果没有事件,它只有一个零。另一个数组,用于计算等于0的项数。基本上我不知道如何在第二个数组的基础上调整第一个数组 我想做的是创建一个数组,在第一个空数组之后删除一些空数组,然后重写值,说一些不同的东西…有点像这样。我想重写它,这样它就可以抓住给定的通用标题和事件时间,并基于0的第一个点和最后一个零值开始 基本上,我必须这样做的原因是我们正在尝试使用客户端api来制定时间表。问题是他们使用的api不适合他们想要显示的开放时间段。所以我要做的是循环打开它们的小时数,根据事件时间添加事件,然后在事件之间创建空白事件。问题是我在创建空白事件方面有困难。 谢谢!我不是最好的php开发人员。实际上,我有一位同事帮我做到了这一点。我只是不知道如何/使用什么函数来实现这一点 理想阵列Php 基于另一个数组重写数组,php,arrays,loops,Php,Arrays,Loops,所以这是一个奇怪的问题。我有两个数组,一个数组是事件列表。如果没有事件,它只有一个零。另一个数组,用于计算等于0的项数。基本上我不知道如何在第二个数组的基础上调整第一个数组 我想做的是创建一个数组,在第一个空数组之后删除一些空数组,然后重写值,说一些不同的东西…有点像这样。我想重写它,这样它就可以抓住给定的通用标题和事件时间,并基于0的第一个点和最后一个零值开始 基本上,我必须这样做的原因是我们正在尝试使用客户端api来制定时间表。问题是他们使用的api不适合他们想要显示的开放时间段。所以我要做
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\u 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\u Array)
完全不清楚重写背后的逻辑是什么。谢谢,我会编辑它。是否提供了第二个数组?或者是否需要从第一个数组生成该数组?我认为没有必要。我创建了第二个数组。它只计算每个数组之间有多少个数组等于零。它应该列在底部。这非常简单在我的思考过程中。