2016-04-29 214 views
0

我正在开发一个PHP应用程序,并通过将字符串数组转换为对象数组产生问题。我尝试使用(数组)强制将字符串转换为数组,但它不起作用。这里是我的字符串(调试):将PHP字符串数组转换为数组对象

string '['method'=>'post','action'=>'#']' (length=32)

正如你所看到的,这是一个完美的阵列成一个字符串,我想那个字符串转换。

我的问题很简单,PHP有一个函数直接将字符串转换为数组(我认为不是)或者我必须通过使用爆炸转换我的字符串?

+0

如何/你在哪里得到这个字符串? –

+0

说真的,我会考虑改变你的应用程序中的某些东西,如果有的话你需要这样做。 –

回答

0

从PHP 5.4,你可以简单的eval: 的eval(“\ $ F = [”方法 '=>' 后”, '动作'=> '#'];“); var_dump($ f);

对于老年人,您必须修正字符串,将第一个“[”更改为“数组(”,最后一个“]”更改为“)”。

的问题是How to create an array from output of var_dump in PHP?

+0

感谢您的快速和正确的答复!我忘了那个eval函数;) – houceni

+1

小心使用eval,虽然_never ever_与用户输入一起使用它;) – SixteenStudio

0

这里是你如何定义一个数组。 可是我在写代码之前,请看看manuels

$arrayName = array('method' => 'post', 'action' => '#'); 

输出将读取

array (size=2) 
    'method' => string 'post' (length=4) 
    'action' => string '#' (length=1) 
0

有点重复,您可以使用preg_splitforeach(),使这项工作:

$str = "['method'=>'post','action'=>'#']"; 

$splitArray = preg_split("/[,']+/", $str); 
foreach ($splitArray as $k => $val) { 
    if ($val == '=>') { 
    $newArr[$splitArray[$k - 1]] = $splitArray[$k + 1]; 
    } 
} 

var_dump($newArr); 
/*newArr 
Array 
(
    [method] => post 
    [action] => # 
)*/