2016-11-24 3 views
-1
Array 
    (
     [0] => Array 
      (
       [source_name] => src_email_24 
       [suggested_by] => Sameer 
       [email_id] => [email protected] 
       [medium_name] => Email 
      ) 
    [1] => Array 
     (
      [source_name] => src_email_24 
      [suggested_by] => Sameer 
      [email_id] => [email protected] 
      [medium_name] => Display 
     ) 
    ) 

И если SOURCE_NAME и medium_name такого же, то я хочу ниже выходная как я могу объединить многомерный aaray в одну array.Any помощи будет большого подспорье.Как объединить значение массива в массиве mulidimensional

Array 
     (
      [0] => Array 
       (
        [source_name] => src_email_24 
        [suggested_by] => Sameer 

        [email_id] => [email protected] 
        [medium_name] => Email,Display 
       ) 
     ) 
+0

См http://stackoverflow.com/a/18498820/4593781 –

+1

source_name и medium_name или source_name и адрес электронной почты? – Samay

+1

Возможный дубликат [Объединение массива в многомерный массив] (http://stackoverflow.com/questions/17850353/array-merge-on-multidimensional-array) – Veerendra

ответ

1

Надежность source_name и адрес электронной почты вместо source_name и medium_name; Кроме того, вы должны иметь только одну запись для конкретной электронной почте о новых наборов данных

<?php 

$originalDataSet = [ 
    [ 
     'source_name' => 'src_email_24', 
     'suggested_by' => 'Sameer', 
     'email_id'  => '[email protected]', 
     'medium_name' => 'Email' 
    ], 
    [ 
     'source_name' => 'src_email_24', 
     'suggested_by' => 'Sameer', 
     'email_id'  => '[email protected]', 
     'medium_name' => 'Display' 
    ] 
]; 
$processedDataSet = getProcessedDataFromOriginalDataSet($originalDataSet); 


function getProcessedDataFromOriginalDataSet($originalDataSet = []) { 
    $processedDataSet = []; 
    foreach ($originalDataSet as $data) { 
     if (isset($processedDataSet[$data['email_id']])) { 
      if ($processedDataSet[$data['email_id']]['source_name'] == $data['source_name'] /* && other conditions*/) { 
       //change only relevant values 
      } 
     } else { 
      $processedDataSet[$data['email_id']] = $data; 
     } 

    } 

    return $processedDataSet; 
} 

В противном случае что-то вроде этого

function getProcessedDataFromOriginal($originalDataSet = []) { 
    $processedDataSet = []; 
    foreach ($originalDataSet as $originalData) { 
     $isAdded = 0; 
     foreach ($processedDataSet as $processedData) { 
      if ($processedData['source_name'] == $originalData['source_name'] /* && other conditions*/) { 
       // make changes on processed data set 
       $isAdded = 1; 
       break; 
      } 
     } 
     if (!$isAdded) { 
      $processedData[] = $originalData; 
     } 
    } 

    return $processedDataSet; 
} 
+0

ах вам нужно передать массивы по ссылке foreach –

+0

на второй пример –

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