当前位置: 首页 > 知识库问答 >
问题:

我想在php中按周分组我的数组

尹俊雅
2023-03-14
$date = array('01-01-2019','02-01-2019','05-01-2019','22-01-2019','02-02-2019','03-02-2019','24-02-2019');

上面是我的数组,我想将日期按周分组,这样我就可以在报告中正确地显示它们。所以会是这样的:

Array
(
    [31-12-2018/06-01-2019] => Array  // this is based in calendar week
        (
            [0] => 01-01-2019
            [1] => 02-01-2019
            [2] => 05-01-2019
        )

    [21-01-2019/27-01-2019] => Array
        (
            [0] => 22-01-2019
        )

    [28-01-2019/03-02-2019] => Array
        (
            [0] => 02-02-2019
            [1] => 03-02-2019
        )

    [18-02-2019/24-02-2019] =>  Array
    (
        [0] => 24-02-2019
    )
)

共有1个答案

山鸿彩
2023-03-14

这段代码会做你想做的事情。它将每个日期值转换为datetime对象,查找该日期的周开始和周结束,然后将该值推入由周开始和周结束值索引的新数组:

$date = array('01-01-2019','02-01-2019','05-01-2019','22-01-2019','02-02-2019','03-02-2019','24-02-2019');
$dates = array();
foreach ($date as $d) {
    $od = date_create_from_format('d-m-Y', $d);
    // get start and end of this week
    $sow = $od->sub(new DateInterval('P' . ($od->format('N') - 1). 'D'))->format('d-m-Y');
    $eow = $od->add(new DateInterval('P6D'))->format('d-m-Y');
    $dates["$sow/$eow"][] = $d;
}
print_r($dates);

输出:

Array (
    [31-12-2018/06-01-2019] => Array ( 
        [0] => 01-01-2019
        [1] => 02-01-2019
        [2] => 05-01-2019 
    )
    [21-01-2019/27-01-2019] => Array (
        [0] => 22-01-2019
    )
    [28-01-2019/03-02-2019] => Array (
        [0] => 02-02-2019
        [1] => 03-02-2019
    )
    [18-02-2019/24-02-2019] => Array (
        [0] => 24-02-2019
    )
)

3v4L.org上的演示

 类似资料:
  • 问题内容: 我有这个数据框: 我想按名称和日期进行汇总以获取数量总和。详细信息: 日期 :组,结果应在星期初(或仅在星期一) 数量 :两个或多个记录具有相同的名称和日期(如果属于相同间隔)的总和 所需的输出如下: 提前致谢 问题答案: 首先转换列 并减去一个星期,因为我们要对日期之前一周进行累加,而不是该日期之前一周。 然后通过W-MON使用with并进行聚合:

  • 问题内容: Oracle的表服务器提供了一个内置功能。此功能将任何时间戳转换为前一个星期日的午夜。在MySQL中执行此操作的最佳方法是什么? Oracle还提供将时间戳转换为发生该月的第一天的午夜。在MySQL中,这很简单: 但是这个技巧将在数周内失效。我知道此功能,但是我真的不想要一年内的星期数。这些东西是用于多年的工作。 问题答案: 想通了…有点麻烦,但这就是。 而且,如果您的业务规则说您的工

  • 我想使用泛型制作数组。 但出现编译错误。 如何使用泛型制作数组?

  • 我正在尝试使用获取下周的星期三日期。但是,它返回的是星期一的。为什么会这样?如何得到正确的结果? 我试图在PHP沙箱中在线复制它,但它返回了正确的结果http://sandbox.onlinephpfunctions.com/code/7ab99fcfeffedc1ad01d7de9ed236ac273fe1bb3这可能取决于我的环境吗? PHP7.0。11(cli)(创建日期:2016年10月2

  • 这是我的按钮单击事件。我想在每次单击按钮时创建组合框。 私有void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ });

  • 我的程序是采取任何类型的文件和打开他们自己。 我已经试过了 我只使用文件获得正确的数据。