2016-06-01 2 views
0

У меня есть массивСлияние 2 элемента того же массива в один в PHP

Array 
(
    [0] => Array 
     (
      [hrg_lid] => 214291464161204318 
      [pecon] => 0 
      [col2pe] => Karam 
      [col4pe] => 1 
      [col6pe] => 2 
      [col8pe] => 264 
      [col9pe] => 42 
      [col10pe] => 85 
      [col11pe] => 2 

     ) 

    [1] => Array 
     (
      [hrg_lid] => 707581464079555092 
      [pecon] => 1 
      [col2pe] => Dummy 
      [col4pe] => 
      [col6pe] => 
      [col8pe] => 12 
      [col9pe] => 0 
      [col10pe] => 0 
      [col11pe] => 2 
      [col12pe] => 1 
      [col13pe] => 1 

     ) 

    [2] => Array 
     (
      [hrg_lid] => 707581464079555092 
      [col5risk] => 2 
      [col6risk] => 2 
      [col7risk] => 1 
      [col8risk] => 2 
      [col9risk] => 1 
      [col10risk] => 1 
      [col11risk] => 2 
     ) 

Я хочу объединить эти элементы, которые имеют то же hrg_lid. Ожидаемый результат

Array 
(
    [0] => Array 
     (
      [hrg_lid] => 214291464161204318 
      [pecon] => 0 
      [col2pe] => Karam 
      [col4pe] => 1 
      [col6pe] => 2 
      [col8pe] => 264 
      [col9pe] => 42 
      [col10pe] => 85 
      [col11pe] => 2 

     ) 

    [1] => Array 
     (
      [hrg_lid] => 707581464079555092 
      [pecon] => 1 
      [col2pe] => Dummy 
      [col4pe] => 
      [col6pe] => 
      [col8pe] => 12 
      [col9pe] => 0 
      [col10pe] => 0 
      [col11pe] => 2 
      [col12pe] => 1 
      [col13pe] => 1 
      [col5risk] => 2 
      [col6risk] => 2 
      [col7risk] => 1 
      [col8risk] => 2 
      [col9risk] => 1 
      [col10risk] => 1 
      [col11risk] => 2 

     ) 

Я попытался следующий код

foreach($arr as $key => $value) { 
     $finalArray[$value['hrg_lid']] = $value; 

    } 

, но не

ответ

1

Я хотел бы использовать hrg_lid в качестве ключа массива - в противном случае вы должны проверить каждый элемент уже в выходной массив для матчей каждого с добавлением нового элемента:

$finalArray = array(); 

foreach($arr as $value) { 
    $hrg_lid = $value['hrg_lid']; 
    if (isset($finalArray[$hrg_lid])) { 
     // merge if element with this $hrg_lid is already present 
     $finalArray[$hrg_lid] = array_merge($finalArray[$hrg_lid], $value); 
    } else { 
     // save as new 
     $finalArray[$hrg_lid] = $value; 
    } 
} 

Если вы хотите получить нормированные ключи массива, вы можете сбросить их позже:

$finalArray = array_values($finalArray); 
0

hrg_lid значение должно быть ключом массива, если вы не будете менять ключи, Попробуйте это:

for($i=0; $i < count($arr);$i++) 
{ 
    for($j=0; $j < count($finalArray);$j++) 
    { 
     if($arr[$i]['hrg_lid'] == $finalArray[$j]['hrg_lid']) 
     { 
      $finalArray[$j] = array_merge($finalArray[$j],$arr[$i]); 
      break; 
     } 
    } 

} 
0

Попробуйте soomething как:

$finalArray = []; 

foreach($arr as $singleArray) { 
    $id = $singleArray['hrg_lid']; 
    if (isset($finalArray[$id])) { 
     $finalArray = array_merge($finalArray[$id], $singleArray); 
    } else { 
     $finalArray[] = $singleArray; 
    } 
} 
0

Вы могли бы попробовать что-то вроде этого:

$tmpArray = array(); 
$finalArray = array(); 

// We merge the arrays which have the same value in 'hrg_lid' col 
foreach($source as $array){ 
    $key = $array['hrg_lid']; 
    array_shift($array); 
    if(array_key_exists($key, $tmpArray)){ 
     $tmpArray[$key] = array_merge($tmpArray[$key], $array); 
    }else{ 
     $tmpArray[$key] = $array; 
    } 
} 

// We build the final array 
foreach($tmpArray as $key => $value){ 
    $finalArray[] = array_merge(array('hrg_lid' => $key), $value); 
} 
Смежные вопросы