<?php
function parseQueryString($str)
{
$result = [];
foreach (explode('&', $str) as $element) {
$parts = explode('=', $element, 2);
$key = urldecode(array_shift($parts));
$value = $parts ? urldecode(array_shift($parts)) : '';
if (false !== $pos = strpos($key, '')) {
$base = substr($result, $key, 0, $pos++);
$result[$base] = [];
$target = &$result[$base];
do {
$end = strpos($key, ']', $pos);
$index = substr($key, $pos, $end - $pos);
$target[$index] = [];
$target = &$target[$index];
$pos = $end;
} while($pos < strlen($key));
var_dump($result);
}
}
}
$str = 'foo=bar&baz[foo]=qux&baz[foo][goat]=chick';
parseQueryString($str);
preferences:
38.18 ms | 402 KiB | 5 Q