我有一个与php中的数组相关的简单问题 这是问题所在。
我有一个像这样的数组
$week_array = array(
'2013-08-18',
'2013-08-11',
'2013-08-04',
'2013-07-28',
'2013-07-21',
);
我正在检索这些记录
$records = array(
array( '2013-08-06' ),
array( '2013-08-05' ),
array( '2013-08-04' ),
array( '2013-08-03' ),
array( '2013-08-03' ),
array( '2013-08-02' ),
array( '2013-08-02' ),
array( '2013-08-01' ),
array( '2013-08-01' ),
array( '2013-07-31' ),
array( '2013-07-31' ),
array( '2013-07-30' ),
);
这是我的代码
$week_counter = 0;
foreach($records as $row){
if($row['date'] < $week_array[$week_counter] && $row['date'] >=$week_array[$week_counter+1]){
echo 'workig';
echo '<br>';
$week_counter++;
}
}
在条件的基础上我想显示夏日(我在这里省略)。但它没有显示,因为条件永远不会满足。当获取数据并且范围正确满足时,显示夏季 现在我如何将指针移动到我的记录应该匹配的确切范围。简单来说,我想删除一些数组元素,以便像这样形成新数组。
$week_array = array(
'2013-08-11',
'2013-08-04',
'2013-07-28',
'2013-07-21',
);
因为起始日期是2013-08-06
,它介于第一个和第二个值之间,因此我想将指针移动到第一个索引而不是保持为0,或者我想切片数组。我怎样才能做到这一点?
另一件事是我无法改变我提供的条件,因为它已经正确地显示了夏季。
EDITS
$records = array(
array( '2013-08-12' ),
array( '2013-08-09' ),
array( '2013-08-06' ),
array( '2013-08-06' ),
array( '2013-08-05' ),
array( '2013-08-04' ),
array( '2013-08-03' ),
array( '2013-08-03' ),
array( '2013-08-02' ),
array( '2013-08-02' ),
array( '2013-08-01' ),
array( '2013-08-01' ),
array( '2013-07-31' ),
array( '2013-07-31' ),
array( '2013-07-30' ),
在此数组中,您可以看到第一和第二范围内的记录。
答案 0 :(得分:0)
经过一些研究后我发现它的工作原理如下
$week_array = array(
'2013-08-18',
'2013-08-11',
'2013-08-04',
'2013-07-28',
'2013-07-21',
);
$records = array(
array( '2013-08-06' ),
array( '2013-08-06' ),
array( '2013-08-05' ),
array( '2013-08-04' ),
array( '2013-08-03' ),
array( '2013-08-03' ),
array( '2013-08-02' ),
array( '2013-08-02' ),
array( '2013-08-01' ),
array( '2013-08-01' ),
array( '2013-07-31' ),
array( '2013-07-31' ),
array( '2013-07-30' ),
);
$week_counter = 0;
if(count($week_array) > 0){
$counter = 0;
foreach($week_array as $sunday){
if($calls[0] > $sunday){
$week_array = array_slice($week_array, $counter );
break;
}
$counter++;
}
}
foreach($records as $row){
if($row['date'] < $week_array[$week_counter] && $row['date'] >=$week_array[$week_counter+1]){
echo 'workig';
echo '<br>';
$week_counter++;
}
}
这正是我想要的。因为循环之前新生成的周数组就像这样
$week_array = array(
'2013-08-11',
'2013-08-04',
'2013-07-28',
'2013-07-21',
);