我正在开发一个PHP应用程序,在将字符串数组转换为对象数组时遇到了问题。我试图通过使用(array)将字符串强制转换为数组,但它不起作用。这是我的字符串(调试):
string '['method'=>'post','action'=>'#']' (length=32)
正如你所看到的,它是一个完美的数组,我想把它转换成一个字符串。
我的问题很简单,PHP是否有一个函数可以将字符串直接转换为数组(我认为没有),或者我必须使用爆炸来转换字符串?
从php 5.4,您可以简单地评估:eval("''$f=['method'=>'post','action'=>'#'];");var_dump($f);
对于older,您必须稍微固定字符串,将第一个"["更改为"array()",将最后一个"]"更改为()。
这个问题与如何在PHP中从var_dump的输出创建数组有点重复?
以下是定义数组的方法。但在编写代码之前,请查看手册
$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] => #
)*/