从字符串指令

时间:2016-04-13 00:34:17

标签: php

我可以像这样创建数组:$array = ['key'=>'value'];

但是可以从字符串创建数组: $string = '['key'=>'value']'? $array = $string$array = (array) $string不起作用。

3 个答案:

答案 0 :(得分:0)

尝试评估。

http://php.net/manual/en/function.exec.php

$array = "['key'=>'value']";
$array = '$array = ' . $array;
eval($array);

但我不推荐exec,因为它可能不安全。

答案 1 :(得分:0)

没有eval():

$str = "['key'=>'value', 'key2'=>'value2']";
$ar = array();

foreach(explode(',', preg_replace('/[^\d\w,>]/', "", $str)) as $k => $v) {
    $tmp = explode('>', $v);
    $ar[$tmp[0]] = $tmp[1]; 
}

var_dump($ar);

输出:

array(2) {
  ["key"]=>
  string(5) "value"
  ["key2"]=>
  string(6) "value2"
}

答案 2 :(得分:-1)

您可以使用eval

$string = '[\'key\'=>\'value\']';
$array = eval('return '.$string.';');
var_dump($array);