2016-06-01 6 views
0

Ich habe ein ArrayMerge 2 Element der gleichen Anordnung in einem in 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 
     ) 

I jene Elemente zusammengeführt werden sollen, die hrg_lid derselben hat. Erwartete Ausgabe

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 

     ) 

Ich habe versucht, Code folgende

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

    } 

aber nicht

Antwort

1

I hrg_lid als Arrayschlüssel verwenden würde - sonst hat man für die Spiele jedes Element bereits in der Ausgabe-Array überprüfen alle Zeit, die Sie ein neues Element hinzufügen:

$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; 
    } 
} 

Wenn Sie normalisierte Array-Schlüssel erhalten möchten, können Sie sie später zurück:

$finalArray = array_values($finalArray); 
0

Der hrg_lid Wert der Schlüssel des Arrays sein müssen, wenn Sie nicht die Schlüssel ändern, versuchen Sie dies:

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

versuchen Sie, wie soomething:

$finalArray = []; 

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

Sie könnten versuchen, so etwas wie das:

$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); 
}