Php 添加从现在起1周内的缺失日期
我正在尝试将丢失的日期添加到该数组中,从现在开始1周 这是我的一个示例数组Php 添加从现在起1周内的缺失日期,php,arrays,Php,Arrays,我正在尝试将丢失的日期添加到该数组中,从现在开始1周 这是我的一个示例数组 Array ( [0] => Array ( [date] => 2013-11-25 [members] => 2 ) [1] => Array ( [date] => 2013-11-27 [members] => 1
Array
(
[0] => Array
(
[date] => 2013-11-25
[members] => 2
)
[1] => Array
(
[date] => 2013-11-27
[members] => 1
)
)
这里面可能有任何日期。我试过这样的方法,但从逻辑上看它不起作用,但我想不出一个办法
$date_range = array();
$temp = array();
for ($i=0; $i<7; $i++)
{
$date = date("Y-m-d", strtotime($i." days ago"));
foreach($new_members as $members) {
if(!in_array($date, $members)) {
$temp['date'] = $date;
$temp['members'] = 0;
$new_members[] = array_merge($temp);
}
}
}
$date\u range=array();
$temp=array();
对于($i=0;$i而不是:
$temp['date'] = $date;
$temp['members'] = 0;
$new_members[] = array_merge($temp);
就这样做吧:
$new_members[$i]['date'] = $date;
if ( !$new_members[$i]['members'] ) $new_members[$i]['members'] = 0;
之后,您可以根据['date']
值对其进行排序,并获得一个漂亮的数组。Dainis提供的解决方案对我不起作用,它会弄乱成员和日期
以下是我的解决方案:
<?php
$new_members = array ( array("date"=>"2013-11-25", "members" => 2), array("date"=>"2013-11-27", "members" => 2));
for ($i=0; $i<7; $i++)
{
$date = date("Y-m-d", strtotime($i." days ago"));
$found = false;
foreach($new_members as $members) {
if(array_search($date, $members) !== false) {
$found = true;
}
}
if(!$found) {
$new_members[] = array ("date" => $date, "members" => 0);
}
}
foreach($new_members as $nm) {
var_dump($nm);
}
?>
这会将它们全部设置为0,但会给我所有的日期。已编辑,但您真的应该重写循环。这有点太乱了。