标题可能有点模糊,但我不知道如何称呼这个问题。
我的表单中有复选框。检查后,他们的值会发布到我的数据库中。然而,当他们没有得到检查时,我无法跟踪未经检查的一次,因为嗯,这就是它的工作方式,对吧?
例如,对于2011年8月21日至2011年8月25日期间的活动,当客人选择他只需要21日和23日的门票时,我会收到以下数组(门票不是只有在最终结果中才会出现的值,仅为了简洁起见:
Array
(
[2011-08-21] => Array
(
[ticket] => 1
)
[2011-08-23] => Array
(
[ticket] => 1
)
)
但是,我也想跟踪他不需要票的其他日子。所以,我需要一个像这样的数组:
Array
(
[2011-08-21] => Array
(
[ticket] => 1
)
[2011-08-23] => Array
(
[ticket] => 0
)
[2011-08-23] => Array
(
[ticket] => 1
)
[2011-08-23] => Array
(
[ticket] => 0
)
[2011-08-23] => Array
(
[ticket] => 0
)
)
这样我可以跟踪我的数据库中的所有内容(这是该项目所需的)。
我只是不太确定如何将第一个数组转换为第二个数组。我一直在尝试for和foreach循环,将它与我的event_details
数组相结合,如下所示:
Array
(
[eventID] => 1
[groupID] => 3
[name] => Moto GP 1
[startDate] => 2011-08-21
[endDate] => 2011-08-25
[number_of_days] => 5
[startDate_f] => 21/08/11
[endDate_f] => 25/08/11
)
使用该数组中的数据,我可以计算所有的事件日,但我不太确定如何完成它。有帮助吗?非常感谢。
答案 0 :(得分:0)
未经测试,但类似:
$selected_days = /* Wherever you get the posted array data from */;
$start = new DateTime($event_details['startDate']);
$end = new DateTime($event_details['endDate']);
while ($start <= $end) {
$key = $start->format('Y-m-d');
if (!array_key_exists($key, $selected_days))
$selected_days[$key] = array( 'ticket' => 0 );
$start->modify('+1 day');
}