Возможный дубликат:
Вывести строку запроса в массив
Как я могу взорвать строку, такую как:
a=1&b=2&c=3
Чтобы это стало:
Array { [a] => 1 [b] => 2 [c] => 3 }
Использование обычной функции explode()
разделенной на &
будет отделять параметры, но не в парах [key] => [value]
.
Благодарю.
Используйте функцию parse_str
PHP.
$str = 'a=1&b=2&c=3'; $exploded = array(); parse_str($str, $exploded); $exploded['a']; // 1
Интересно, откуда вы взяли эту строку? Если это часть URL-адреса после вопросительного знака ( строка запроса URL-адреса), вы можете получить к нему доступ через суперглобальный массив $_GET
:
# in script requested with http://example.com/script.php?a=1&b=2&c=3 $_GET['a']; // 1 var_dump($_GET); // array(3) { ['a'] => string(1) '1', ['b'] => string(1) '2', ['c'] => string(1) '3' )
Попробуйте использовать parse_str()
:
$str = "first=value&arr[]=foo+bar&arr[]=baz"; parse_str($str, $output); echo $output['first']; // value echo $output['arr'][0]; // foo bar echo $output['arr'][1]; // baz
Что-то вроде этого будет работать
$str = "a=1&b=2&c=3" $array = array(); $elems = explode("&", $str); foreach($elems as $elem){ $items = explode("=", $elem); $array[$items[0]] = $items[1]; }