Skip to content
Advertisement

Need two dimensional array for 2 column CSV from 2 strings

I am working on a project to create 2 column CSV using PHP and i have the data stored as strings in 2 different variables . Consider below example of what i have and what i need further. Thank you in advance.

I have below 2 variables and data stored inside them. (data is separated by comma)

$title = title1,title2,title3,title4,title5..and so on
$values = value1,value2,value3,value4,value5..and so on

I need this array pattern like this

 $multi_array = array
  (
  array(title1,value1),
  array(title2,value2),
  array(title3,value3),
  );

I will then use the below code to generate 2 column CSV via PHP

    // open the file "demosaved.csv" for writing
$file = fopen('demosaved.csv', 'w');

// save the column headers
fputcsv($file, array('Column 1', 'Column 2'));

// save each row of the data
foreach ($multi_array as $row)
{
fputcsv($file, $row);
}

// Close the file
fclose($file);

Advertisement

Answer

Since the values are comma separated strings, explode them into arrays:

$title  = explode(",", $title);
$values = explode(",", $values);

Then you can just use the key to match up the values from each array (assuming that they are the same length):

foreach ($values as $key => $val)
{
    fputcsv($file, [$title[$key], $val]);
}

Or combine them:

$multi_array = array_combine($title, $value);

foreach ($multi_array as $title => $value)
{
    fputcsv($file, [$title, $value]);
}

If you’re on an old version of PHP you’ll need array() instead of [ ].

From the OP, since there many be duplicates in the string that would be duplicate keys: “use the below code to perform the same job and even keep the duplicate keys. PHP array_combine removes the duplicate array entries but below code keeps all entries:”

$arrKeys = array('str', 'str', 'otherStr');
$arrVals = array('1.22', '1.99', '5.17');
function foo($key, $val) {
   return array($key=>$val);
}

$arrResult = array_map('foo', $arrKeys, $arrVals);

print_r($arrResult);
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement