2010-12-16 61 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年了,但我想給簡單的方式,爲我工作。