php将字符串变量转换为数组

php将字符串变量转换为数组,php,arrays,Php,Arrays,我有字符串,需要转换为数组 <?php $str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"'; $array = array($str); print_r($array) ?> PHP中是否有这样的函数 当尝试下面的代码时,我得到了很好的结果。但是当使用上面的代码时,没有!如何转换输入数组的字符串变量 <?php //$str = '"en"=>"English" , "fr"=>"

我有字符串,需要转换为数组

<?php
$str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"';
$array = array($str);
print_r($array)
?>
PHP中是否有这样的函数

当尝试下面的代码时,我得到了很好的结果。但是当使用上面的代码时,没有!如何转换输入数组的字符串变量

<?php
//$str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"';
$array = array("en"=>"English" , "fr"=>"French" , "de"=>"German");
print_r($array)
?>

如评论中所述,如果您有办法更改字符串,您可能应该查看
json
,否则类似的内容就足够了:

$str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"';
$first = explode(' , ',$str);

$second = array();
foreach($first as $item) {
    list($key, $value) = explode('=>', $item);
    $second[str_replace('"', '', $key)] = $value;
}
返回:

Array
(
    [en] => "English"
    [fr] => "French"
    [de] => "German"
)

如评论中所述,如果您有办法更改字符串,您可能应该查看
json
,否则类似的内容就足够了:

$str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"';
$first = explode(' , ',$str);

$second = array();
foreach($first as $item) {
    list($key, $value) = explode('=>', $item);
    $second[str_replace('"', '', $key)] = $value;
}
返回:

Array
(
    [en] => "English"
    [fr] => "French"
    [de] => "German"
)

您可以使用eval,在您的情况下可以是这样的:

$str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"';
eval("\$array = array($str);");
print_r($array)
结果:

Array
(
    [en] => English
    [fr] => French
    [de] => German
)

您可以使用eval,在您的情况下可以是这样的:

$str = '"en"=>"English" , "fr"=>"French" , "de"=>"German"';
eval("\$array = array($str);");
print_r($array)
结果:

Array
(
    [en] => English
    [fr] => French
    [de] => German
)

这看起来像一个关联数组。邪恶的
eval
浮现在脑海中。不要这样做。相反,请尝试一系列的
explode
trim
甚至
preg\u match
。不,这不是普遍支持的序列化格式。您必须为此自定义格式编写自己的函数。或者使用一般支持的东西,比如JSON。这是从哪里来的?它最初是如何变成一个字符串的?看起来像是一个关联数组。邪恶的
eval
浮现在脑海中。不要这样做。相反,请尝试一系列的
explode
trim
甚至
preg\u match
。不,这不是普遍支持的序列化格式。您必须为此自定义格式编写自己的函数。或者使用一般支持的东西,比如JSON。这是从哪里来的?它最初是如何变成字符串的?我会从键中删除引号。否则,您必须使用
$second[“\”fr\”]访问它们我将从键中删除引号。否则,您必须使用
$second[“\”fr\”]访问它们谢谢!这对我来说是最好的答案。我需要这个!就像@putvande my$str变量不是用户输入,由php生成。是的,如果使用
eval
进行用户输入,可能会出现安全漏洞。谢谢!这对我来说是最好的答案。我需要这个!就像@putvande my$str变量不是用户输入,由php生成。是的,如果使用
eval
进行用户输入,可能会出现安全漏洞。