3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string ="Folder1/Folder2/Folder3/filename1\n"; $string .=" Folder1/Folder2/Folder3/filename2\n"; $string .=" Folder4/Folder2/Folder3/filename3\n"; $string .=" filename4\n"; $string .=" Folder5/filename5\n"; $string .=" Folder5/Folder6/filename6\n"; $parsable = ''; foreach (explode("\n", trim($string)) as $path) { // cut off final newline and explode $entries = explode("/", trim($path)); // cut off leading spaces and explode $file = array_splice($entries, -1); // separate filename from path $path = array_reduce($entries, function($carry, $v) { return $carry."[$v]"; // wrap each folder in square brackets }); $parsable .= "path{$path}[]={$file[0]}&"; // build parsable string (final trailing & will be ignored) } echo $parsable,"\n\n"; parse_str($parsable, $out); var_export($out);
Output for git.master, git.master_jit, rfc.property-hooks
path[Folder1][Folder2][Folder3][]=filename1&path[Folder1][Folder2][Folder3][]=filename2&path[Folder4][Folder2][Folder3][]=filename3&path[]=filename4&path[Folder5][]=filename5&path[Folder5][Folder6][]=filename6& array ( 'path' => array ( 'Folder1' => array ( 'Folder2' => array ( 'Folder3' => array ( 0 => 'filename1', 1 => 'filename2', ), ), ), 'Folder4' => array ( 'Folder2' => array ( 'Folder3' => array ( 0 => 'filename3', ), ), ), 0 => 'filename4', 'Folder5' => array ( 0 => 'filename5', 'Folder6' => array ( 0 => 'filename6', ), ), ), )

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
30.92 ms | 402 KiB | 8 Q