【发布时间】:2014-06-24 03:36:21
【问题描述】:
我正在尝试制定谁在哪一天使用特定项目的时间表。
我有 2 个数组。 一个带日期的 & 另一个人的名字以及他们可以使用该物品的天数。
我已经设法使用它创建了日期数组。
function dateArray($from, $to, $value = NULL) {
$begin = new DateTime($from);
$end = new DateTime($to);
$interval = DateInterval::createFromDateString('1 day');
$days = new DatePeriod($begin, $interval, $end);
$baseArray = array();
foreach ($days as $day) {
$dateKey = $day->format("d-m-Y");
$baseArray[$dateKey] = $value;
}
return $baseArray;
}
$dates_array = dateArray('01-01-2014', '30-09-2014',true);
print_r($dates_array );
这给了我日期
Array
(
[01-01-2014] => 1
[02-01-2014] => 1
[03-01-2014] => 1
[04-01-2014] => 1
[05-01-2014] => 1
[06-01-2014] => 1
[07-01-2014] => 1
[08-01-2014] => 1
[09-01-2014] => 1
and so on.
)
我有另一个名称数组,其中 name 作为 key 和 days 作为 value ,他们可以像这样使用该项目。
$names_array = array("name1" => "4", "name2" => "3", "name3" => "1");
现在我想根据这个人可以使用该项目的天数来为日期分配名称。 像这样。 我需要我的最终输出数组是这样的
Array
(
[01-01-2014] => name1
[02-01-2014] => name1
[03-01-2014] => name1
[04-01-2014] => name1
[05-01-2014] => name2
[06-01-2014] => name2
[07-01-2014] => name2
[08-01-2014] => name3
[09-01-2014] => name1
and so on. notice name1 comes again
)
所以我试图获得像上面这样的输出,但是我在 foreach 内的 while 循环中失败了。 到目前为止,我已经尝试过了。
function dateArray($from, $to, $value = NULL) {
$begin = new DateTime($from);
$end = new DateTime($to);
$interval = DateInterval::createFromDateString('1 day');
$days = new DatePeriod($begin, $interval, $end);
$baseArray = array();
foreach ($days as $day) {
$dateKey = $day->format("d-m-Y");
$baseArray[$dateKey] = $value;
}
return $baseArray;
}
$dates_array = dateArray('01-01-2014', '30-09-2014',true);
$names_array = array("name1" => "4", "name2" => "3", "name3" => "1");
print_r($dates_array );
$new_dates = array();
foreach($dates_array as $dates => $key){
//echo $dates;
foreach ($names_array as $name => $days){
while($days <= 1){
$new_dates[$dates] = $name ;
$days = $days - 1;
}
}
}
print_r($new_dates);
但我的最终数组是空的。
那我该如何解决呢?
【问题讨论】:
-
这不是你的问题的一部分......但不会覆盖某些值吗?因为如果两个用户在同一天都有 $days
-
这个想法是,名称应该设置为值,而日期作为键。如果 days = 1 那么它应该只指定一个名字,然后继续下一个名字。
-
对不起,我还是不明白你想要达到什么目的。我在 PHP 沙箱中运行这个,它似乎只分配了 foreach 的最后一个值。因为显然它会覆盖。就像是什么决定了 name1 在您展示的示例中重复
-
因为如果这一天总是