首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个数组计算id =日期的次数

两个数组计算id =日期的次数
EN

Stack Overflow用户
提问于 2014-07-23 21:35:22
回答 2查看 63关注 0票数 0

我已经坐了一段时间了,已经很晚了。我试图从上个月的大部分销售中获得前3名,我需要计算上个月数组1的id等于数组2的次数(6=最后一个atm)。似id 4= 2,id 7=3

这可能不是一个完美的解决方案,但我只是试图打破它的自我,所以以后的‘也许’的问题,我会照顾好当我撞墙时,所以请,如果有人可以帮助我,我是伟大的。

UPDATE -我将添加我在这里寻找的结果:(很抱歉我之前没有,它使事情变得更容易了:-)下面的结果,是因为我希望从2014-06-01到那个月的最后一天,在这个数组下的数组中,只有6-7-8不是2014-06。

希望现在更有意义^^

代码语言:javascript
复制
Array
(
[0] => Array
    (
        [0] => Array
            (
                [4] => 2
                [7] => 3
                [1] => 2
                [3] => 2
                [9] => 1
                [12] => 1
                [2] => 1
                [13] => 1
            )

    )

)




Array
(
[0] => Array
    (
        [0] => Array
            (
                [0] => 4
                [1] => 4
                [2] => 7
                [3] => 1
                [4] => 7
                [5] => 7
                [6] => 3
                [7] => 3
                [8] => 4
                [9] => 9
                [10] => 12
                [11] => 2
                [12] => 13
                [13] => 1
            )

        [1] => Array
            (
                [0] => 2014-06-18
                [1] => 2014-06-10
                [2] => 2014-06-05
                [3] => 2014-06-05
                [4] => 2014-06-12
                [5] => 2014-06-11
                [6] => 2013-12-12
                [7] => 2014-07-23
                [8] => 2014-05-13
                [9] => 2014-06-01
                [10] => 2014-06-12
                [11] => 2014-06-04
                [12] => 2014-06-04
                [13] => 2014-06-11
            )

    )

)
EN

回答 2

Stack Overflow用户

发布于 2014-07-23 22:09:21

我希望我理解的是你真正想要的。假设您的数组定义是:

代码语言:javascript
复制
$arr = Array
(
0 => Array
    (
        0 => Array
            (
                0 => 4,
                1 => 4,
                2 => 7,
                3 => 1,
                4 => 7,
                5 => 7,
                6 => 3,
                7 => 3,
                8 => 4,
                9 => 9,
                10 => 12,
                11 => 2,
                12 => 13,
                13 => 1
            ),

        1 => Array
            (
                0 => "2014-06-18",
                1 => "2014-06-10",
                2 => "2014-06-05",
                3 => "2014-06-05",
                4 => "2014-06-12",
                5 => "2014-06-11",
                6 => "2013-12-12",
                7 => "2014-07-23",
                8 => "2014-05-13",
                9 => "2014-06-01",
                10 => "2014-06-12",
                11 => "2014-06-04",
                12 => "2014-06-04",
                13 => "2014-06-11"
            )

    )

);

如果需要测试日期是否低于6个月,然后将它们的idsalesdate放在一起,则需要使用以下代码

代码语言:javascript
复制
   $result = [];
   $index=0;
   foreach ($arr[0][0] as $key => $value) 
   {
      $date1 = new DateTime($arr[0][1][$key]);
      $date2 = new DateTime();
      $diff = $date1->diff($date2);
      $diff = ($diff->format('%y') * 12) + $diff->format('%m');
      if($diff<=6)
      {
         $result[$index]['id'] = $key;
         $result[$index]['sales'] = $value;
         $result[$index]['date'] = $arr[0][1][$key];
         $index++;
      }
   }

   var_dump($result);
票数 0
EN

Stack Overflow用户

发布于 2014-07-23 22:10:49

array将给出每个值出现在数组1中的次数。

代码语言:javascript
复制
$count = array_count_values($array[0][0]);

结果:

代码语言:javascript
复制
Array
(
    [4] => 3
    [7] => 3
    [1] => 2
    [3] => 2
    [9] => 1
    [12] => 1
    [2] => 1
    [13] => 1
)

然后可以使用循环与数组2组合:

代码语言:javascript
复制
$result = array();
foreach($count as $key=>$val) {
    $result[$array[0][1][$key]] = $val;
}

结果:

代码语言:javascript
复制
Array
(
    [2014-06-12] => 3
    [2014-07-23] => 3
    [2014-06-10] => 2
    [2014-06-05] => 1
    [2014-06-01] => 1
    [2014-06-04] => 1
    [2014-06-11] => 1
)

See demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24921460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档