alternative to eval('$array_test = array('.$test.


alternative to eval('$array_test = array('.$test.');')

我正在寻找的替代方案

$test = "1=>'msg_test1',3=>'msg_test2',9=>'msg_test3'";
eval('$array_test = array('.$test.');');

有人知道如何从字符串中以安全的方式获得数组吗?

提前感谢您的帮助!

您可以使用explode()手动解析它,如下所示:

$test = "1=>'msg_test1,3=>'msg_test2,9=>'msg_test3'";
$array_test = array();
foreach(explode(',', substr($test, 0, -1)) as $row)
{
    $split = explode('=>''', $row);
    $array_test[$split[0]] = $split[1];
}
var_dump($array_test);

产品:

array (size=3)
  1 => string 'msg_test1' (length=9)
  3 => string 'msg_test2' (length=9)
  9 => string 'msg_test3' (length=9)

如果我理解你的问题,那么你应该像一样格式化你的字符串

$test = "value1,value2,value2";

然后继续并引爆

$array_test = explode(',', $test);

您的阵列

$array_test = array(
    '1' => 'value1'
    '2' => 'value2'
    '3' => 'value3'
);