2010-12-16 65 views
0

我有一个PHP文件,其中包含一些数组。我想修改其中一个数组并将其写回文件。对于例如说文件test.php的有内容 -修改文件中的数组值

<?php 
$arr1 = array("a"=>"b", "c" =>"d"); 
$arr2 = array("a2" => "b2", "c2" => "d2"); 

我想改变$ ARR1,这样的test.php现在看起来像 -

<?php 
$arr1 = array("a"=>"b", "c" =>"d", "e"=>"f"); 
$arr2 = array("a2" => "b2", "c2" => "d2"); 

我不知道什么阵都存在事先在文件中。

编辑:我没有添加任何变量的数组,只有另一个键值对。问题是该数组是文件的一部分,其中包含更多数组,关于这个数组我并不总是知道。如果文件中只有一个数组,但我想知道是否可以对多个数组执行此操作,则可以实现此目的。

+0

从你的问题中很难理解你的上下文。您正试图将未知变量添加到第一个数组的末尾?或者你试图根据第二个数据的变化来确定第一个数组的内容?请澄清你正在努力完成的任务 - 只要脚本的目标背景可能有所帮助。 – DeaconDesperado 2010-12-16 15:03:51

+0

我不明白你的问题。从我的问题来看,非常明显的是,我试图给第二个数组添加一个值(不是变量)。我没有看到任何理由在这里混淆或downvote .. – pinaki 2010-12-16 15:06:22

+0

只是为了澄清,我没有发出downvote。我不确定你的问题是如何访问这个其他文件的。它是包含在内还是正在远程阅读? – DeaconDesperado 2010-12-16 15:12:53

回答

1

如果你在一个函数(即不在全球范围内)get_defined_vars()可能是一个不错的选择。您只需要将文件包含在一个封闭的范围内,并返回它的关键字以获取文件中的所有变量名称。

+0

正是我所需要的..谢谢.. – pinaki 2010-12-16 15:50:46

2

你可以引入另一个“地球”阵列

$arr = array('arr1' => array("a"=>"b", "c" =>"d"), 'arr2' =>("a2" => "b2", "c2" => "d2")); 

serialize

$serArr = serialize($arr); 
//write to file here 

当你阅读文件,只是unserialize其内容让你有“全局”阵列与它的子 - 数组,修改你需要的值,序列化并写回。

请记住,当您编写大数组时,这可能是一个巨大的性能问题。

+0

+1 ..该方法是好的,但问题是,我不能改变文件内容来添加另一个数组(否则将这个值添加到数组本身会很少费力)。有什么办法我可以检索文件中的所有数组值并更改它们并将它们写回? – pinaki 2010-12-16 15:12:29

+0

你是什么意思“不能改变文件内容来添加另一个数组”? – DrColossos 2010-12-16 15:15:52

+0

如果通过“更改文件中的值”,则意味着在请求完成并且脚本已经执行后将新值保存到文件中,唯一可行的答案是使用任何机制保存,例如保存到平面文本文件DrColossos描述的方式或数据库供以后检索。这是你通过改变文件的意思吗?你想实际修改test.php中反映的物理值,因为它永久地将它们写在代码中并保存它们? – DeaconDesperado 2010-12-16 15:22:35

0
<?php 
$arr1 = array("a"=>"b", "c" =>"d"); 
$newarr=array("d"=>"f"); 
$arr1+=$newarr; 

它已经5年了,但我想给简单的方式,为我工作。