combine two array using common field in php -
i need combine 2 array using key field.
$array1 = array( val1 => 'abc', val2 => '5' ); $array1 = array( val1 => 'bcd', val2 => '2' ); $array2 = array( val1 => 'abc', val3 => '1' ); $array2 = array( val1 => 'zzz', val3 => '3' ); array1: val1 val2 abc 5 bcd 2 array2: val1 val3 abc 1 zzz 3 the result have follows;(requirement)
val1 val2 val3 abc 5 1 bcd 2 0 zzz 0 3 still now, developed further needs modification achieve above table.
foreach($array1 $ar1){ $val1=''; $val2=''; $val3=''; foreach($array2 $ar2){ if($ar1['val1']==$ar2['val1']){ $val1=$ar1['val1']; $val2=$ar1['val2']; $val3=$ar2['val3']; } } $result=array( val1 => $val1, val2 => $val2, val3 => $val3 ); } this captures common data.
$result = array(); // make $result associative array, containing contents of $array1 foreach ($array1 $e) { $e['val3'] = 0; // val3 defaults 0 $result[$e['val1']] = $e; } // merge in $array2 foreach ($array2 $e) { if (isset($result[$e['val1']])) { $result[$e['val1']]['val3'] = $e['val3']; } else { $e['val2'] = 0; // val2 defaults 0 $result[$e['val1']] = $e; } } // convert indexed array $result = array_values($result); btw, correct way create input arrays is:
$array1 = array(array( 'val1' => 'abc', 'val2' => '5' ), array( 'val1' => 'bcd', 'val2' => '2' ) ); $array2 = array(array( 'val1' => 'abc', 'val3' => '1' ), array( 'val1' => 'zzz', 'val3' => '3' ) );
Comments
Post a Comment