我正在开发一个PHP应用程序,并通过将字符串数组转换为对象数组产生问题。我尝试使用(数组)强制将字符串转换为数组,但它不起作用。这里是我的字符串(调试):将PHP字符串数组转换为数组对象
string '['method'=>'post','action'=>'#']' (length=32)
正如你所看到的,这是一个完美的阵列成一个字符串,我想那个字符串转换。
我的问题很简单,PHP有一个函数直接将字符串转换为数组(我认为不是)或者我必须通过使用爆炸转换我的字符串?
我正在开发一个PHP应用程序,并通过将字符串数组转换为对象数组产生问题。我尝试使用(数组)强制将字符串转换为数组,但它不起作用。这里是我的字符串(调试):将PHP字符串数组转换为数组对象
string '['method'=>'post','action'=>'#']' (length=32)
正如你所看到的,这是一个完美的阵列成一个字符串,我想那个字符串转换。
我的问题很简单,PHP有一个函数直接将字符串转换为数组(我认为不是)或者我必须通过使用爆炸转换我的字符串?
从PHP 5.4,你可以简单的eval: 的eval(“\ $ F = [”方法 '=>' 后”, '动作'=> '#'];“); var_dump($ f);
对于老年人,您必须修正字符串,将第一个“[”更改为“数组(”,最后一个“]”更改为“)”。
感谢您的快速和正确的答复!我忘了那个eval函数;) – houceni
小心使用eval,虽然_never ever_与用户输入一起使用它;) – SixteenStudio
这里是你如何定义一个数组。 可是我在写代码之前,请看看manuels
$arrayName = array('method' => 'post', 'action' => '#');
输出将读取
array (size=2)
'method' => string 'post' (length=4)
'action' => string '#' (length=1)
有点重复,您可以使用preg_split
和foreach()
,使这项工作:
$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] => #
)*/
如何/你在哪里得到这个字符串? –
说真的,我会考虑改变你的应用程序中的某些东西,如果有的话你需要这样做。 –