删除php中超出范围的上部数组元素


Remove upper array elements that are out of range in php

我有一个关于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++;
    }
}

在此基础上,我想展示夏天(我在这里省略了)。但它什么也不显示,因为条件永远不会满足。当数据被提取并且范围正确满足时,将显示summary
现在,我如何将指针移动到我的记录应该匹配的确切范围。简单地说,我想删除数组中的一些元素,这样新的数组就这样形成了。

$week_array    =   array(
                    '2013-08-11',
                    '2013-08-04',
                    '2013-07-28',
                    '2013-07-21',
                );              

因为起始日期是介于第一个值和第二个值之间的2013-08-06,所以我想将指针移动到第一个索引,而不是保持在0,或者我想对数组进行切片。我该怎么做?

另一件事是,我无法更改我提供的条件,因为它已经正确地显示了summer。

编辑

$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'  ),

在这个数组中,您可以看到第一个和第二个范围中的记录。

经过一些研究,我发现它像这样工作

$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',
            );