Метод для пары ключ-значение, похожий на взрыв в php? - PullRequest
4 голосов
/ 30 января 2010

Есть ли в PHP уже существующая функция для создания ассоциативного массива из строки с разделителями? Если нет, то что было бы наиболее эффективным способом сделать это? Я смотрю на новый API NVP PayPal, где запросы и ответы имеют следующий формат:

 method=blah&name=joe&id=joeuser&age=33&stuff=junk

Я могу использовать explode(), чтобы получить каждую пару в значение массива, но было бы еще лучше, если бы я мог выполнить какую-то функцию, такую ​​как dictionary_explode, указать разделитель значения ключа и получить обратно связанный массив, например :

Array {
 [method] => blah
 [name] => joe
 [id] => joeuser
 [age] => 33
 [stuff] => junk

}

Мои друзья из CS говорят мне, что эта идея существует в других языках, таких как Python, поэтому мне интересно, не нашел ли я такую ​​вещь для PHP. Прямо сейчас я смотрю на array_walk, но я бы предпочел что-то более готовое.

1 Ответ

12 голосов
/ 30 января 2010

PHP имеет встроенную функцию: parse_str()

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>

Примечание: Я рекомендую не использовать первую форму (parse_str($str)) по той же причине register_globals плохо. Вторая форма (parse_str($str, $arr)) всегда предпочтительна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...