将PHP字符串数组转换为array对象


Convert a PHP string array into an Array object

我正在开发一个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_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] => #
)*/