2014-07-23 5 views
0

Ive сидел с этим какое-то время и опаздывал. Im пытается получить 3 лучших продаж в прошлом месяце, и мне нужно подсчитать, сколько раз идентификатор из массива 1 равен массиву 2 в прошлом месяце (6 = последний атм.), Например id 4 = 2, id 7 = 32 массива подсчитывают, сколько раз id = date

Это может быть не идеальное решение, но я просто пытаюсь сломать его сам, так что позже, возможно, «проблемы», я позабочусь о том, чтобы попасть в стену, , так что, пожалуйста, если любой может помочь мне здесь, больно быть большим.

UPDATE - я добавлю результат им ищет здесь: (извините я не до того, что делает его намного проще :-) - результат ниже, потому что я хочу, чтобы это число от 2014-06- 01 и до последнего дня месяца monly, на массиве [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 месяцев, а затем положить их 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); 
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-06-01 и до последнего дня этого месяца, поэтому результат быть как: массив ( [4] =>> 2 < [7] => 3 [1] => 2 [3] =>> 0 < [9] => 1 [ 12] => 1 [2] => 1 [13] => 1 ) – user3104565

Смежные вопросы