php - Create associative array from three flat arrays -
consider following:
$a = array('q1', 'q2', 'q3', 'q4'); $b = array('2014' => '101', '2014' => '102', '2014' => '103', '2014' => '104'); $c = array('2015' => '101', '2015' => '102', '2015' => '103', '2015' => '104');
how transform these 3 arrays 1 this:
array( 'q1' => array( '2014' => '101', '2015' => '101' ), 'q2' => array( '2014' => '102', '2015' => '102' ), 'q3' => array( '2014' => '103', '2015' => '103' ), 'q4' => array( '2014' => '104', '2015' => '104' ) );
i'm unable merge $b
, $c
in way can use array_combine
$a
maintaining desired structure mentioned above.
sorry array()
on code, i'm dealing legacy app.
first, have duplicate array keys , in case, last key override preceding ones. here, arbitrary assumption made effect keys have unique suffixes facilitate merging had intended.
<?php $a = array('q1', 'q2', 'q3', 'q4'); $b = array('2014' => '101', '2014_2' => '102', '2014_3' => '103', '2014_4' => '104'); $c = array('2015' => '101', '2015_2' => '102', '2015_3' => '103', '2015_4' => '104'); function mergearraysassociative($arrkeys, $array1, $array2) { $merged = array(); foreach ($arrkeys $key => $val) { $arrkeys1 = array_keys($array1); $arrkeys2 = array_keys($array2); $arrvalues1 = array_values($array1); $arrvalues2 = array_values($array2); $merged[$val][$arrkeys1[$key]] = $arrvalues1[$key]; $merged[$val][$arrkeys2[$key]] = $arrvalues2[$key]; } return $merged; } var_dump(mergearraysassociative($a, $b, $c)); ?>
the var_dump() above produces similar shown below. and, can quick test here.
array (size=4) 'q1' => array (size=2) 2014 => string '101' (length=3) 2015 => string '101' (length=3) 'q2' => array (size=2) '2014_2' => string '102' (length=3) '2015_2' => string '102' (length=3) 'q3' => array (size=2) '2014_3' => string '103' (length=3) '2015_3' => string '103' (length=3) 'q4' => array (size=2) '2014_4' => string '104' (length=3) '2015_4' => string '104' (length=3)
Comments
Post a Comment