我想在一个给定的比赛找出一个足球(足球运动员)的实际播放时间重新分配的值。换句话说,他作为一名积极球员在场上的时间。
一些用户输入的数据提供:
- 如果当球员被替换下场,而他是否埋入式或关闭
- 玩家是否开始在球场上还是在板凳上比赛
- 的开始和结束时间戳为比赛的每一半
问题
我试图创建一对事件,它们表示实际播放时间的“单位”。在本例中,在最外面的foreach的第一次迭代中,我创建了一个数组:
$aptPeriods = array( 'start' => 32, 'end' => '' )
在第二次迭代中,脚本标识空'结束'值,并尝试重新分配它。
$playerSubstitutions = array(
array(
'type' => 'on',
'time' => '38'
),
array(
'type' => 'off',
'time' => '68'
)
);
foreach($playerSubstitutions as $sub) {
// If the sub type is 'on', create a new aptPeriod and set the 'end' time to nothing
if($sub['type'] == 'on') {
$subOnEvent = array(
'start' => $sub['time'],
'end' => ''
);
array_push($aptPeriods, $subOnEvent);
// If the sub type is 'off', scan the aptPeriods array for an empty 'end' value, then set it to the subOff time
} elseif($sub['type'] == 'off') {
foreach($aptPeriods as $period) {
if($period['end'] == '') {
$period['end'] == $sub['time'];
}
}
}
}
echo '<pre>'; print_r($aptPeriods); echo '</pre>';
这将返回:
Array
(
[0] => Array
(
[start] => 38
[end] =>
)
)
最里面的foreach肯定是执行和$sub['time']
是绝对确定,但空白“结束”值不被重新分配。我哪里错了?
此代码似乎相当不登大雅之堂。你能解释一下它究竟意味着什么吗?并提供其他几个不同的输入数组?必须有一个更高效/干净的方式来做到这一点。 – mickmackusa
好点。请参阅编辑的问题。 – devbox
如果玩家不是“开始”玩家(坐着开始比赛),输入阵列是什么样的?如果玩家在场上开始怎么办?如果我能看到数据的结构,我可以提出改进建议。 – mickmackusa