在PHP中,如何将字符串变量中的数组(字典)转换为数组结构?

在PHP中,如何将字符串变量中的数组(字典)转换为数组结构?,php,arrays,string,Php,Arrays,String,我在堆栈中寻找将字符串变量转换为数组的解决方案。字符串变量包含以下内容: $myvar = 'array("a" => array("b1" => 1, "b2" => "something"), "c" => array("d1" => 1))'; 我想转换为: $myarray = array( "a" =>

我在堆栈中寻找将字符串变量转换为数组的解决方案。字符串变量包含以下内容:

$myvar = 'array("a" => array("b1" => 1, "b2" => "something"), "c" => array("d1" => 1))';
我想转换为:

$myarray = array(
     "a" => array (   
         "b1" => 1, 
         "b2" => "something"
     ),
     "c" => array("d1" => 1)      
);
我使用了
json\u decode
在将我的巨大字符串转换为json之后,我也使用了内爆

使用eval,我收到下一个错误:

分析错误:语法错误,意外'使用eval()

$myarray=eval($myvar)

但是,如果从脚本外部获取$myvar,请不要这样做。此外,在PHP中还有更好的方法来序列化和取消序列化数据。例如,请参见

如果直接读取.php文件,则必须处理
。您可以在将文件传递到
eval()
之前对其进行预分析。如果您的文件非常简单:

使用eval()

$myarray=eval($myvar)

但是,如果从脚本外部获取$myvar,请不要这样做。此外,在PHP中还有更好的方法来序列化和取消序列化数据。例如,请参见

如果直接读取.php文件,则必须处理
。您可以在将文件传递到
eval()
之前对其进行预分析。如果您的文件非常简单:

使用eval()

$myarray=eval($myvar)

但是,如果从脚本外部获取$myvar,请不要这样做。此外,在PHP中还有更好的方法来序列化和取消序列化数据。例如,请参见

如果直接读取.php文件,则必须处理
。您可以在将文件传递到
eval()
之前对其进行预分析。如果您的文件非常简单:

使用eval()

$myarray=eval($myvar)

但是,如果从脚本外部获取$myvar,请不要这样做。此外,在PHP中还有更好的方法来序列化和取消序列化数据。例如,请参见

如果直接读取.php文件,则必须处理
。您可以在将文件传递到
eval()
之前对其进行预分析。如果您的文件非常简单:

eval()
将完成您需要的功能,但正如这里的另一张海报在其回答中所建议的,您必须非常小心地使用此功能

$myvar = 'array("a" => array("b1" => 1, "b2" => "something"), "c" => array("d1" => 1))';
eval("\$myarray = " . $myvar . ';');
var_dump($myarray);
输出

array(2) {
  ["a"]=>
  array(2) {
    ["b1"]=>
    int(1)
    ["b2"]=>
    string(9) "something"
  }
  ["c"]=>
  array(1) {
    ["d1"]=>
    int(1)
  }
}
有人评论说,
eval
已被弃用,但我找不到任何支持这一点的信息。但是,它的使用是令人沮丧的,所以你可以认为它是在现有PHP功能不能完成你的任务时的最后一个手段。

<代码>代码>(或)>代码>将完成你所需要的,但是作为另一张海报,在他的回答中,你必须谨慎使用这个函数。
$myvar = 'array("a" => array("b1" => 1, "b2" => "something"), "c" => array("d1" => 1))';
eval("\$myarray = " . $myvar . ';');
var_dump($myarray);
输出

array(2) {
  ["a"]=>
  array(2) {
    ["b1"]=>
    int(1)
    ["b2"]=>
    string(9) "something"
  }
  ["c"]=>
  array(1) {
    ["d1"]=>
    int(1)
  }
}
有人评论说,
eval
已被弃用,但我找不到任何支持这一点的信息。但是,它的使用是令人沮丧的,所以你可以认为它是在现有PHP功能不能完成你的任务时的最后一个手段。

<代码>代码>(或)>代码>将完成你所需要的,但是作为另一张海报,在他的回答中,你必须谨慎使用这个函数。
$myvar = 'array("a" => array("b1" => 1, "b2" => "something"), "c" => array("d1" => 1))';
eval("\$myarray = " . $myvar . ';');
var_dump($myarray);
输出

array(2) {
  ["a"]=>
  array(2) {
    ["b1"]=>
    int(1)
    ["b2"]=>
    string(9) "something"
  }
  ["c"]=>
  array(1) {
    ["d1"]=>
    int(1)
  }
}
有人评论说,
eval
已被弃用,但我找不到任何支持这一点的信息。但是,它的使用是令人沮丧的,所以你可以认为它是在现有PHP功能不能完成你的任务时的最后一个手段。

<代码>代码>(或)>代码>将完成你所需要的,但是作为另一张海报,在他的回答中,你必须谨慎使用这个函数。
$myvar = 'array("a" => array("b1" => 1, "b2" => "something"), "c" => array("d1" => 1))';
eval("\$myarray = " . $myvar . ';');
var_dump($myarray);
输出

array(2) {
  ["a"]=>
  array(2) {
    ["b1"]=>
    int(1)
    ["b2"]=>
    string(9) "something"
  }
  ["c"]=>
  array(1) {
    ["d1"]=>
    int(1)
  }
}


有人评论说,
eval
已被弃用,但我找不到任何支持这一点的信息。但是,它的使用是令人沮丧的,所以当现有PHP功能不能完成您的任务时,您可能认为它是最后的手段。

是,<代码> JSONY-DECODE 是这样的,但是您没有说当您尝试它时发生了什么。如果您控制数组是如何保存/保存的,您应该看一下and函数。您的第一个示例不是有效的PHP字符串。对不起,真正的Utkanos,它只返回带有一个元素的数组,其中cih是string@faintsignal我的错,它没有被弃用。在javascript中是(但这是PHP)。但是,与外部资源一起使用时要小心。是的,
json_decode
是一种方法,但您不能说明尝试该方法时发生了什么。如果您可以控制数组的保存/持久化方式,则应该查看和函数。您的第一个示例不是有效的PHP StringTorry true Utkanos,它只返回一个数组,其中一个元素是string@faintsignal我的错,它没有被弃用。在javascript中是(但这是PHP)。但是,与外部资源一起使用时要小心。是的,
json_decode
是一种方法,但您不能说明尝试该方法时发生了什么。如果您可以控制数组的保存/持久化方式,则应该查看和函数。您的第一个示例不是有效的PHP StringTorry true Utkanos,它只返回一个数组,其中一个元素是string@faintsignal我的错,它没有被弃用。在javascript中是(但这是PHP)。但是,与外部资源一起使用时要小心。是的,
json_decode
是一种方法,但您不能说明尝试该方法时发生了什么。如果您可以控制数组的保存/持久化方式,则应该查看和函数。您的第一个示例不是有效的PHP StringTorry true Utkanos,它只返回一个数组,其中一个元素是string@faintsignal我的错,它没有被弃用。在javascript中是(但这是PHP)。但是,在使用外部资源时要小心;打印(评估($myvar));在我的代码中尝试了它,但它不起作用,请在第1行给我一个错误代码eval()'d,您可以发布错误吗?还有,你到底想做什么?因为如果你只是想定义一个数组,那要简单得多。$myvar='array(“a”);打印(评估($myvar));在我的代码中尝试了它,但它不是w