3v4l.org

run code in 300+ PHP versions simultaneously
<?php $input = <<<STR Maths Maths|Algebre Maths|Algebre|Algebre 1 Maths|Algebre|Algebre 2 Maths|Algebre|Algebre 3 Maths|Analyse Maths|Analyse|Analyse 1 Maths|Analyse|Analyse 2 Maths|Probabilité physics STR; function cleanupLines(array $lines): array { foreach ($lines as $index => $line) { if ($index > 0 && strpos($line, $lines[$index - 1]) === 0) { unset($lines[$index - 1]); } } return $lines; } function lineToArray(array $lineParts): array { if (count($lineParts) > 1) { return [$lineParts[0] => lineToArray(array_slice($lineParts, 1))]; } return $lineParts; } $lines = preg_split('/\r?\n/', $input); $lines = cleanupLines($lines); $result = array_reduce($lines, static function (array $result, string $line): array { $lineParts = explode('|', $line); $arrayPart = lineToArray($lineParts); return array_merge_recursive($result, $arrayPart); }, []); print_r($result);

preferences:
16.27 ms | 402 KiB | 5 Q