[英]How to convert a string that contains an associative array to an associative array type?
我有一个包含这样的关联数组的字符串
$string = "['key1'=>'value1','key2'=>'value2','key3'=>'value3']";
我想将其转换为关联数组,以便我可以遍历它。
有什么办法吗?
提前致谢 。
非常简单的方法是将该字符串转换为json并进行解码
$string = str_replace(["'", '=>', '[', ']'], ['"', ':', '{', '}'], $string);
print_r(json_decode($string, true));
您可以像这样使用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]+
匹配az
, AZ
, 0-9
, -
和_
,因此这应该是键和值的格式。 您当然可以根据需要调整Regx。
现在,如果您想将它们以更实用的格式放置,可以添加以下内容:
$output = array_combine($matches['key'],$matches['value']);
产量
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
我应该指出的一点是,这不适用于嵌套数组,因为您需要更高级的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.