<?php
$csv = <<<CSV
key=a,key2=b,key3=c
key=d,key2=e,key4=f,key3=g
CSV;
$header = [];
$rows = [];
foreach (explode(PHP_EOL, $csv) as $i => $line) {
foreach (str_getcsv($line) as $pair) {
[$key, $rows[$i][$key]] = explode('=', $pair, 2);
$header[$key] = $key;
}
}
sort($header);
$defaults = array_fill_keys($header, 'null');
$result = [implode(',', $header)];
foreach ($rows as $row) {
$result[] = implode(',', array_replace($defaults, $row));
}
var_export($result);
preferences:
23.41 ms | 410 KiB | 5 Q