Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 2个数组计算id=日期的次数_Php_Sql_Arrays - Fatal编程技术网

Php 2个数组计算id=日期的次数

Php 2个数组计算id=日期的次数,php,sql,arrays,Php,Sql,Arrays,我和这个坐了一会儿,时间不早了。 我试图从上个月的销售额中获得前三名,我需要计算上个月数组1中的id等于数组2的次数(6=最后一台atm),比如id 4=2,id 7=3 这可能不是一个完美的解决方案,但我只是试着自己去解决它,所以以后遇到“可能”的问题时,我会在碰壁时处理好吗, 所以,如果有人能在这里帮助我,我将不胜感激 更新 -我将在这里添加我想要的结果:(很抱歉,我以前没有这样做,这使它更容易:-) -下面的结果是因为我想要从2014-06-01到该月最后一天的计数,在该数组下的数组[0]

我和这个坐了一会儿,时间不早了。 我试图从上个月的销售额中获得前三名,我需要计算上个月数组1中的id等于数组2的次数(6=最后一台atm),比如id 4=2,id 7=3

这可能不是一个完美的解决方案,但我只是试着自己去解决它,所以以后遇到“可能”的问题时,我会在碰壁时处理好吗, 所以,如果有人能在这里帮助我,我将不胜感激

更新 -我将在这里添加我想要的结果:(很抱歉,我以前没有这样做,这使它更容易:-) -下面的结果是因为我想要从2014-06-01到该月最后一天的计数,在该数组下的数组[0][1]中,只有6-7-8不是从2014-06开始的

希望它现在更有意义^^

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
            )

    )

)

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

$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个月,然后输入他们的
id
sales
date
,则需要使用此代码

   $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);
$result=[];
$index=0;
foreach($arr[0][0]作为$key=>$value)
{
$date1=新的日期时间($arr[0][1][$key]);
$date2=新的日期时间();
$diff=$date1->diff($date2);
$diff=($diff->format('%y')*12)+$diff->format('%m');
if($diff将给出每个值在数组1中出现的次数

$count = array_count_values($array[0][0]);
结果:

Array
(
    [4] => 3
    [7] => 3
    [1] => 2
    [3] => 2
    [9] => 1
    [12] => 1
    [2] => 1
    [13] => 1
)
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
)
然后可以使用循环与阵列2组合:

$result = array();
foreach($count as $key=>$val) {
    $result[$array[0][1][$key]] = $val;
}
结果:

Array
(
    [4] => 3
    [7] => 3
    [1] => 2
    [3] => 2
    [9] => 1
    [12] => 1
    [2] => 1
    [13] => 1
)
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
)

您能否指定您正在谈论的数组1和数组2是什么?对不起,数组1=array[0],数组2=array[1]根据您当前的数据,您希望得到的最终结果是什么?您想要的是前3名,那么是7、4和???(因为1、2、9、12和13都有1)。你能显示你想要返回的内容吗?数组1和数组2是如何连接的?这几乎就像我要查找的第一个结果,但我不查找具体的天数,我只查找从2014-06-01到该月最后一天的天数,所以结果类似于:数组([4]=>>2<[7]=>3[1]=>2[3]=>>0<[9] => 1 [12] => 1 [2] => 1 [13] => 1 )