3v4l.org

run code in 300+ PHP versions simultaneously
<?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);
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
array ( 0 => 'key,key2,key3,key4', 1 => 'a,b,c,null', 2 => 'd,e,g,f', )

preferences:
69.33 ms | 402 KiB | 62 Q