将数组保存到PHP文件

23

我有一个用来存储数组的 PHP 文件:

<?php
  $arr = array (
    "A" => "one",
    "B" => "two",
    "C" => "three"
  );
?>
我正在使用require打开文件,并将每个条目加载到表单中(foreach循环)。我想要将$_POST变量保存回原始文件(覆盖),并且格式保持不变。我已经成功创建了表单并发送了变量,只需要一种方法将数组打印回原始文件中。 示例结果:
<?php
  $arr = array (
    "A" => "new value",
    "B" => "other new value",
    "C" => "third new value"
  );
?>

由于返回的格式不正确,我无法使用 print_r。请问如何成功地执行此操作?谢谢。


1
如果你真的想把数组/对象保存到文件中,为什么不直接使用json_encode()json_decode()呢?或者使用serialize()unserialize() - WWW
我不明白你在这里尝试什么。 - Mr. Alien
1
var_export()接近于您想要的功能,但是没有内置的PHP函数可以将结构导出为可执行的PHP代码。请使用serialize()json_encode()来存储数据。 - Marc B
3个回答

67

你需要的函数是var_export

你可以像这样使用它

file_put_contents($filename, '<?php $arr = ' . var_export($arr, true) . ';');

演示


7
你可能不想实时重写你的php代码。
两个替代方案:
  1. 使用数据库
  2. 序列化数组,然后(覆盖)写入文件。读取文件时,只需要反序列化值。
  3. 如#2所述,使用json_encodejson_decode

我想要能够手动编辑包含数组的文件;当有很多条目时,序列化的数组并不容易阅读。 - Mooseman
1
json_encode / json_decode 绝对是一个可行的替代方案,可以得到更易读/编辑的结果。 - Jason Crittenden
有些情况下,编写一个包含数组的 PHP 文件是有意义的。例如,在应用程序安装时编写敏感配置文件。 - markus

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接