5

如何解析var_dumpPHP 的输出以创建数组?

4

6 回答 6

23

如果您想要一个也是有效 PHP 代码的表示,请使用var_export

$a = array (1, 2, array ("a", "b", "c"));
$dump=var_export($a, true);
echo $dump;

将显示

array (
 0 => 1,
 1 => 2,
 2 => 
 array (
   0 => 'a',
   1 => 'b',
   2 => 'c',
 ),
)

要将其转回数组,您可以使用 eval,例如

eval("\$foo=$dump;");
var_dump($foo);

不知道你为什么要这样做。如果您想在某处存储 PHP 数据结构,然后稍后重新创建它,请查看更适合此任务的serialize()unserialize() 。

于 2009-09-15T08:43:49.673 回答
2

我有一个类似的问题:一个长时间运行的脚本最后产生了一个大型数组的 vardump。我不得不以某种方式将其解析回来以进行进一步分析。我的解决方案是这样的:

cat log.stats  | 
  sed 's/\[//g' | 
  sed 's/\]//g' | 
  sed -r 's/int\(([0-9]+)\)/\1,/g' | 
  sed 's/\}/\),/g' | 
  sed -r 's/array\([0-9]+\) \{/array(/g' > 
  log.stats.php
于 2012-02-06T11:43:19.953 回答
1

也许您正在寻找var_export可以为您提供传递值的有效 PHP 表达式。

于 2009-09-15T08:43:55.370 回答
1

也许您正在尝试将对象转换为数组? http://www.phpro.org/examples/Convert-Object-To-Array-With-PHP.html

于 2009-09-15T08:44:56.927 回答
1

var_export创建 PHP 代码,您可以通过eval.

但我想知道,你的想法是什么?

于 2009-09-15T08:44:59.333 回答
1

你不能。var_dump只输出文本但不返回任何内容。

于 2009-09-15T08:41:29.697 回答