2014-07-23 21 views
0

我已經坐了一會兒,現在已經遲到了。 我試圖從上個月獲得大多數銷售的前三名,我需要計算數組1中的id與上個月的數組2相等的次數(6 =最後一個atm),如id 4 = 2,id 7 = 32個陣列計算id = date的次數

它可能不是一個完美的解決方案,但我只是試圖按自己的方式來分解它,所以稍後'可能'的問題,我會照顧當我撞牆, 所以請,如果任何人都可以幫助我,這真是太好了。

UPDATE - 我將添加結果即時尋找這裏:(對不起,我之前didnt,它使很多:-) 容易 - 下面的結果,是因爲我想從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 
      ) 

    ) 

) 
+2

可以請你指定的是陣列1和陣列2你在說什麼? – Khalid

+0

對不起。 Array 1 = Array [0]和Array 2 = Array [1] – user3104565

+0

根據您當前的數據,您期望的最終結果是什麼?你想要前3名,所以會是7,4,? (因爲1,2,9,12和13都有1)。你能展示你想要的東西嗎? – Sean

回答

0

我希望,我的理解是你真正要求。假設你的數組定義是:

$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你需要使用這個代碼

$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

array_count_values()會給你的時間出現的每個值的數目在陣列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 
) 

然後你可以使用一個循環與陣列2相結合:

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

結果:

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

它幾乎就像這個第一個結果即時尋找,但即時通訊不尋找具體的日期計數,即時通訊尋找它只能從2014年6月1日和直到該月的最後一天計算,所以結果是這樣的: 陣列 ( [4] =>> 2 < [7] => 3 [1] => 2 [3] =>> 0 < [9] => 1 [ 12] => 1 [2] => 1 [13] => 1 ) – user3104565