【问题标题】:2 arrays, need the result to be what i show2个数组,需要结果是我显示的
【发布时间】:2025-12-26 19:30:07
【问题描述】:

这是我的数组,我想要下面的结果,但想不出来。

结果是一个 ID 在 2014-06-01 到 2014-06-xx 的最后一天之间出现日期的次数

在我的日期为“array[1]”的数组中,只有 6-7-8 的日期错误。

请帮忙:-S

结果

Array
(

[0] => Array
    (
        [1] => 2
        [4] => 2
        [7] => 3
        [9] => 1
        [12] => 1
        [13] => 1
    )
)


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
    )

)

【问题讨论】:

  • 我们在看什么?这些数字是多少?
  • 上个月的前三名
  • “RESULT”中的第一个数组是您想要的结果数组吗?如果是这样,为什么 id 4 = 1 的计数;应该是2吧?
  • 订单,只显示日期和id
  • 没错,id 为 4,我现在将其更改为 2,很抱歉造成混淆。

标签: php mysql arrays


【解决方案1】:

希望以下工作。没测试过。

$idsArray = $yourArray[0];
$dateArray = $yourArray[1];
$countArray = array(); // the result array

$beginningTimestamp = strtotime('2014-06-01');
$lastTimestamp = strtotime('2014-07-01');  // before the first of July comes the last of June

foreach ($idsArray as $key => $id) {
   if (isset($dateArray[$key])) {
     $timestamp = strtotime($dateArray[$key];
     if ($timestamp >= $beginningTimestamp && $timestamp < $lastTimestamp) {
        if (isset($countArray[$id])) {
           $countArray[$id]++;
        } else {
           $countArray[$id] = 1;
        }
     }
   } 
}

【讨论】:

  • Wee,非常感谢,它就像我想要的那样工作。我对日期不是很熟悉。但是谢谢:-)