类似于在php中爆炸的键值对的方法?

时间:2010-01-30 04:47:06

标签: php arrays dictionary

PHP中是否存在用于从分隔字符串创建关联数组的函数?如果没有,那么最有效的方法是什么?我正在查看PayPal的新NVP API,其中请求和响应具有以下格式:

 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 个答案:

答案 0 :(得分:12)

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))始终是首选。