我有一个包含类似关联数组的字符串
$string = "['key1'=>'value1','key2'=>'value2','key3'=>'value3']";
我希望将它转换为关联数组,以便我可以遍历它。
有什么办法吗?
提前致谢。
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以使用preg_match_all
,如下所示:
$string = "['key1'=>'value1','key2'=>'value2','key3'=>'value3']";
preg_match_all("/'(?P<key>[-\w]+)'\s*=\>\s*'(?P<value>[-\w]+)'/", $string, $matches);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => 'key1'=>'value1'
[1] => 'key2'=>'value2'
[2] => 'key3'=>'value3'
)
[key] => Array
(
[0] => key1
[1] => key2
[2] => key3
)
[1] => Array
(
[0] => key1
[1] => key2
[2] => key3
)
[value] => Array
(
[0] => value1
[1] => value2
[2] => value3
)
[2] => Array
(
[0] => value1
[1] => value2
[2] => value3
)
)
需要注意的是[-\w]+
匹配a-z
,A-Z
,0-9
,-
和_
,因此这应该是键和值都是。您当然可以根据需要调整Regx。
现在,如果您想将它们放在更有用的格式中,可以添加:
$output = array_combine($matches['key'],$matches['value']);
输出
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
我应该说的一点是,这对嵌套数组不起作用,因为你需要更高级的东西。