【发布时间】:2013-08-23 16:04:43
【问题描述】:
我有一个与 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++;
}
}
根据条件,我想显示summery(我在这里省略了)。但它什么也不显示,因为条件永远不会满足。当数据被提取并且范围正确满足时,将显示摘要。
现在我怎样才能将指针移动到我的记录应该匹配的确切范围。简而言之,我想删除数组的一些元素,以便像这样形成新数组。
$week_array = array(
'2013-08-11',
'2013-08-04',
'2013-07-28',
'2013-07-21',
);
因为开始日期是2013-08-06,它介于第一个值和第二个值之间,因此我想将指针移动到第一个索引而不是保持在 0,或者我想对数组进行切片。我怎样才能做到这一点?
另一件事是我无法更改我提供的条件,因为它已经正确显示了summery。
编辑
$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' ),
在此数组中,您可以看到第一和第二范围内的记录。
【问题讨论】:
-
您的条件永远不会起作用,因为日期不能早于也不能等于或晚于另一个日期......所以请明确关于哪些变量的预期结果!
-
你真的在比较原始字符串吗?这是行不通的。 PHP 应该如何知道哪个字符串“更大”?您必须将它们转换为数字或编写自己的比较。
-
@Chris:原始字符串比较将使用这种显式格式。自己试试。 :)
-
抱歉我更新了问题
-
请告诉我这个条件:
$row['date'] < $week_array[$week_counter] && $row['date'] >=$week_array[$week_counter]将返回 true 的日期!
标签: php arrays loops conditional-statements