【问题标题】:Filter an PHP Array and consider the date range过滤 PHP 数组并考虑日期范围
【发布时间】:2012-11-10 00:19:59
【问题描述】:

我有以下数组:

Array
(
    [0] => Array
    (
        [date] => 2012-01-10        
    )
    [1] => Array
    (
        [date] => 2012-01-11
    )
    [2] => Array
    (
        [date] => 2012-01-12
    )
    [3] => Array
    (
        [date] => 2012-01-15
    )
    [4] => Array
    (
        [date] => 2012-01-18
    )
    [5] => Array
    (
        [date] => 2012-01-19
    )
)

我想按他的范围合并日期。最后我需要类似下面的东西

Array
(
    [0] => Array
    (
        [from] => 2012-01-10
        [till] => 2012-01-12
    )
    [1] => Array
    (
        [from] => 2012-01-15
        [till] => 2012-01-15
    )
    [2] => Array
    (
        [from] => 2012-01-18
        [till] => 2012-01-19
    )
)

但它也应该支持广泛的范围。 2012-01-22 到 2012-05-14 之类的东西。任何人的想法或提示?

【问题讨论】:

  • 你有没有尝试过?如果您提供您已经尝试过的内容,那么指出改进之处可能会更快,而不是从头开始为您创建解决方案。 (仅供参考,当你不展示你的尝试时,有些人会脾气暴躁,因为看起来你只是在要求别人做你的工作。:-)

标签: php arrays date filter merge


【解决方案1】:

您的输出与上述示例中的输入不包含相同的日期。起止日期是如何决定的?我们是否只是简单地遍历数组并在 from to 之间交替?

function from_till($dates = array()){
  $sorted = array();
  for($i=0; $i<count($dates)-2; $i+=2){
    $sorted[] = array('from' => $dates[$i], 'till' => $dates[$i+1];
  }
  return $sorted;
}

输入:

$input = Array
(
    [0] => Array
    (
        [date] => 2012-01-10        
    )
    [1] => Array
    (
        [date] => 2012-01-11
    )
    [2] => Array
    (
        [date] => 2012-01-12
    )
    [3] => Array
    (
        [date] => 2012-01-15
    )
    [4] => Array
    (
        [date] => 2012-01-18
    )
    [5] => Array
    (
        [date] => 2012-01-19
    )
);

输出:

  $output = from_till($input);
  print_r($output);

print_r 的输出

Array
(
    [0] => Array
    (
        [from] => 2012-01-10
        [till] => 2012-01-11
    )
    [1] => Array
    (
        [from] => 2012-01-12
        [till] => 2012-01-15
    )
    [2] => Array
    (
        [from] => 2012-01-18
        [till] => 2012-01-19
    )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多