繁体   English   中英

如何将包含关联数组的字符串转换为关联数组类型?

[英]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]+匹配azAZ0-9-_ ,因此这应该是键和值的格式。 您当然可以根据需要调整Regx。

现在,如果您想将它们以更实用的格式放置,可以添加以下内容:

 $output = array_combine($matches['key'],$matches['value']);

产量

Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
)

我应该指出的一点是,这不适用于嵌套数组,因为您需要更高级的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM