文件内容为多维数组

时间:2013-02-28 02:07:47

标签: php arrays multidimensional-array

我有一个这种形式的多维数组的输出:

Array
(
[MiddleName] => de
[FirstName] => Lianne
[Id] => 2937
[LastName] => Natris
)
Array
(
[MiddleName] => de
[FirstName] => Herman
[Id] => 2215
[LastName] => Groot
)

我通过使用API​​来获取用户数据,所以我现在需要修复它。此输出是我剩下的唯一正确数据。 API更新功能的工作原理如下:

$grp = array('LastName' => 'John', 'MiddleName' => 'van'); 
$rID = $app->dsUpdate("Contact", $cID, $grp);

如何将此输出解析回多个数组?我对正则表达式的了解非常有限:((

提前致谢!

1 个答案:

答案 0 :(得分:0)

print_r()的输出并不适合“逆向工程”原始结构。

如果您希望仅使用字符串表示形式,则可以使用serialize()unserialize()代替。

// turn array into a string format
$str = serialize($arr);

// get it back into an array
var_dump(unserialize($str));

如果要将结构写入脚本文件(如简单缓存)或var_export()json_encode()(如果需要共享结构),您还可以查看json_decode()以JavaScript为例。

<强>更新

如果你别无选择:

$arrays = array();
if (preg_match_all('/^Array\s*\((.*?)\)/ms', $s, $matches)) {
  foreach ($matches[1] as $match) {
    if (preg_match_all('/\[([^]]+)\] => (.*)/', $match, $params)) {
      $arrays[] = array_combine($params[1], $params[2]);
    }
  }
  print_r($arrays);
} else {
  die("Arrrrgh");
}

Demo