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

以周为单位对数组项排序

郜卓君
2023-03-14

我有一系列的项目,比如:

int(1615300101) int(1615300134) int(1615300138) int(1615300144) int(1615300195) int(1615300199) int(1615300203) int(1615300273) int(1615300277) int(1615300282) int(1615300295) int(1615300300) int(1615300306) int(1615300309) int(1615300315) int(1615300322) int(1615300324) int(1615300329) int(1615300335) int(1615300437) int(1615300440) int(1615300445) int(1615300449) int(1615300455) int(1615300460) int(1615300529) int(1615300534) int(1615300541) int(1615300598) int(1615300601) int(1615300607) int(1615300645) int(1615300652) int(1615300656) int(1615300704) int(1615300710) int(1615300715) int(1615300856) int(1615300860) int(1615300865) int(1615300870) int(1615301009) int(1615301015) int(1615301020) int(1615301025) int(1615301041) int(1615301046) int(1615301050) int(1615301057) int(1615301061)

这个数组来自于从另一个目录获取所有文件。

$images = scandir($dir);
  var_dump($images);
  foreach ($images as $image) {
    $creacio = exif_read_data($dir.'/'.$image);
    $data = $creacio['FileDateTime'];
    var_dump($data);
  }

我以为我能按周来分类,但找不到办法...例如:

在3月1-7日的一周,将只有一个项目(第一个),但在8-14日的一周,将有所有其他项目

有没有办法把它们分类,按周分组?

共有1个答案

况鸿雪
2023-03-14

您可以从文件名中提取日期(可能使用正则表达式),将其解析为日期,然后获取日期的周号。使用周号作为关联数组中的键,并在相应的键处添加每个文件名:

foreach ($images as $image) {
    if (preg_match("#_\K\d{8}\b#", $image, $matches)) {
        $results[DateTime::createFromFormat('Ymd', $matches[0])->format('W')][] = $image;
    }
}

在此之后,$results将(对于示例数据):

[
    "09" => [
        "SDAlarm_20210301-152817.jpg"
    ],
    "10" => [
        "SDAlarm_20210309-152850.jpg",
        "SDAlarm_20210309-152855.jpg",
        "SDAlarm_20210309-152900.jpg",
        "SDAlarm_20210309-152950.jpg",
        "SDAlarm_20210309-152955.jpg",
        "SDAlarm_20210309-153000.jpg"
    ]
]
 类似资料:
  • Java8的类有一个方法,,它允许您从、字母字符串中定义格式。这些示例没有阐明,年-纪元和,周-年之间的区别。是什么?

  • 问题内容: 我想创建一个(非匿名)函数,该函数按键按字母顺序对对象数组进行排序。我只编写简单的JavaScript代码,因此框架至少没有帮助我。 问题答案: 这个怎么样? 这使您可以指定用于对数组进行排序的键,这样您就不仅限于硬编码的名称排序。它将对所有共享属性的对象数组进行排序,这些属性将用作键。我相信那是您要找的东西?

  • 我在斯卡拉偶然发现了intersting这个东西(可能只对我来说)。总而言之,如果我们有一个BigDecimal(假设,其中是十进制字符串) 不会总是产生< code>true。我认为它与大小数的运算有关。我知道在scala中,创建BigDecimals的默认MathContext设置为< code>DECIMAL128(四舍五入,精度等于34)。我在小数点后超过30位的小数上发现了这种行为 我的

  • 我刚刚意识到,如果我只对包含文本的区域执行OCR处理,它会快得多。因此,我所做的是检测图像中的文本区域,然后对每个区域进行OCR处理。这是使用OpenCV“检测文本区域”步骤的结果(我用它在图像上绘制矩形): 唯一的问题是我不能把文本结果按照它们出现在原始图像上的顺序排列。在这种情况下,应该是: 基本上是任何其他有文字的图像。 这是OCR过程(使用Tesseract):

  • 问题内容: 我有一个对象。我使用将对象编码为json 。 我怎样才能测量json字符串的大小? 问题答案: 并且不公开也不维护写入字节数。 一种方法是先使用内置函数将其编入其长度来封送该值。您要查找的位数是长度乘以8(1字节为8位)。之后,您必须手动将字节片写入输出中。对于小型类型,这不是问题,但是对于大型结构/值,可能是不希望的。另外,也没有必要的工作将其编组,获取其长度并手动编写切片。 一种更

  • 未排序数组[输入]: 数组中元素的格式将始终为: 我尝试了array.sort()函数,但没有得到预期的输出。