如何在PHP中从var_dump的输出创建数组?

如何在PHP中从var_dump的输出创建数组?,php,var-dump,Php,Var Dump,如何在PHP中解析var\u dump的输出以创建数组?您不能。只输出文本,但不返回任何内容。如果您想要一个同时也是有效PHP代码的表示,请使用 $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 =&

如何在PHP中解析
var\u dump
的输出以创建数组?

您不能。只输出文本,但不返回任何内容。

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

$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数据结构存储在某个位置,然后稍后重新创建它,请查看哪些数据结构更适合此任务。

也许您正在寻找将为您提供传递值的有效PHP表达式的数据结构。

也许您正在尝试将对象转换为数组?

创建PHP代码,您可以通过


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

我有一个类似的问题:一个长时间运行的脚本在最后生成了一个大数组的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

很好的回答,唯一的问题是如果值包含字符串。。。所以他们并没有被“当然,这只是一个快速的破解,它适用于我的特定场景。一般来说,var_dump很难解析回来,所以只要可能,我就使用其他东西(主要是json_编码)。你是对的,字符串会引起问题。如果包含斜杠或引号,则会出现巨大问题。如果包含一些本身看起来像var dump output(=>,[8]或int(12)):)的内容,这是错误的。它不生成数组,它只是将$foo作为一个字符串,它等于$dump,这也是一个字符串,应该进行解析。不,它不起作用。当我获取输出字符串,注释掉前两行并将$dump设置为这个输出字符串(wither html或text)时,我得到了一个语法错误。因此,使用var_导出变量和只使用已被var_转储的字符串是不同的。如果出现语法错误,则说明您做错了什么。我建议你问一个新问题。如果有人通过古尔德旧拷贝粘贴从var_dump中得到一个字符串呢?(我认识一些人,他们会将大量var_转储复制到文本文件中,然后将这些文本文件发送给我。)@Seika85:你可以告诉他们使用输出缓冲将结果作为字符串。但就这个问题而言,当他们询问获取数组时,这仍然是一个“否”。