2015-12-17 3 views
1

Я пытаюсь вызвать Google Analytics API на PHP с использованием цикла Еогеасп как это:Объединить 2 многомерный массив

foreach($getResults as $row) { 
switch($row[0]) { 
    case 'New Visitor': 
     $data[] = array(
      'new' => $row[2], 
      'date' => date("M d", strtotime($row[1])) 
     ); 
    break; 
    case 'Returning Visitor': 
     $data[] = array(
      'return' => $row[2], 
      'date' => date("M d", strtotime($row[1])) 
     ); 
    break; 
}} 

И у меня есть результат массив как это:

Array (
[0] => Array 
    (
     [new] => 13 
     [date] => Dec 17 
    ) 

[1] => Array 
    (
     [return] => 8 
     [date] => Dec 17 
    ) 

[2] => Array 
    (
     [new] => 11 
     [date] => Dec 16 
    ) 

[3] => Array 
    (
     [return] => 3 
     [date] => Dec 16 
    )) 

Но я хочу, чтобы объединить два каждый массив выше, вместе, и даст выход так:

Array (
[0] => Array 
    (
     [new] => 13 
     [return] => 8 
     [total] => 21 
     [date] => Dec 17 
    ) 

[2] => Array 
    (
     [new] => 11 
     [return] => 3 
     [total] => 14 
     [date] => Dec 16 
    )) 

Я уже пытаются использовать array_merge() и с помощью + operato r для объединения, но это не дало мне результата, как то, что я пробовал, кто-нибудь может мне помочь?

ответ

1

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

Если, например $getResults выглядит следующим образом:

$getResults = array(
    array(
     'New Visitor', 
     '12/17/2015', 
     13 
    ), 
    array(
     'Returning Visitor', 
     '12/17/2015', 
     8 
    ), 
    array(
     'New Visitor', 
     '12/16/2015', 
     11 
    ), 
    array(
     'Returning Visitor', 
     '12/16/2015', 
     3 
    ) 
); 

Может быть подстроено, как это может помочь вам:

$data = array(); 

foreach ($getResults as $row) { 
    $date = date("M d", strtotime($row[1])); 
    isset($data[$date]['total']) ? $data[$date]['total'] += $row[2] : $data[$date]['total'] = $row[2]; 
    $data[$date]['date'] = $date; 
    switch ($row[0]) { 
     case 'New Visitor': 
      $data[$date]['new'] = $row[2]; 
      break; 
     case 'Returning Visitor': 
      $data[$date]['return'] = $row[2]; 
      break; 
    } 
} 

print_r($data); 

// If you don't want the 'date' as a key, you can use: 
// $data = array_values($data); 

будет приводить:

Array 
(
    [Dec 17] => Array 
     (
      [total] => 21 
      [date] => Dec 17 
      [new] => 13 
      [return] => 8 
     ) 

    [Dec 16] => Array 
     (
      [total] => 14 
      [date] => Dec 16 
      [new] => 11 
      [return] => 3 
     ) 

) 
+0

Да, это работает , но как я могу удалить ключ даты, потому что я просто хочу использовать обычный ключ –

+0

@JhonnyJr. Вы можете использовать '$ data = array_values ​​($ data);' Я добавил это в качестве комментария в свой ответ. –

+0

Да, почему это не перешло мне в голову. Большое вам спасибо, ваш ответ - это 100% работа для моей проблемы –

0

Вы можете использовать общее имя ключа:

$data['YOUR_COMMON_KEY'] = array(
    'new' => $row[2], 
    'date' => 'Dec 17' 
); 

Вы можете использовать значение date как ключ. После итерации $getResults вы должны получить многомерный массив, но без числовых клавиш. Поэтому, если вы хотите получить числовой массив, просто используйте array_values().

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