2010-12-16 7 views
0

Ich habe eine PHP-Datei mit einigen Arrays drin. Ich möchte eines dieser Arrays ändern und es zurück in die Datei schreiben. Für z.B. sagen Datei test.php Inhalt hat -Ändern Array-Werte in einer Datei

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

i $ arr1 ändern wollen, so jetzt, dass test.php aussieht - ich weiß nicht,

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

was Arrays vorher in der Datei vorhanden sind.

Edit: Ich füge keine Variablen in das Array, nur ein anderes Schlüsselwertpaar. Das Problem ist, dass das Array Teil einer Datei mit mehr Arrays darin ist, über die ich nicht immer bewusst sein werde. Ich kann dies erreichen, wenn nur ein Array in der Datei vorhanden ist, aber ich möchte wissen, ob dies mit mehreren Arrays möglich ist.

+0

Es ist schwer zu verstehen, Ihren Kontext von Ihrer Frage. Sie versuchen, dem Ende des ersten Arrays unbekannte Variablen hinzuzufügen? Oder du versuchst den Inhalt des ersten Arrays zu bestimmen, basierend darauf, wie sich der zweite ändert? Bitte erläutern Sie, was Sie erreichen möchten - vorausgesetzt, der Kontext des Ziels des Skripts könnte helfen. – DeaconDesperado

+0

Ich verstehe deine Frage nicht. Aus meiner Frage ist es sehr klar, dass ich versuche, dem zweiten Array einen Wert (keine Variable) hinzuzufügen. Ich sehe keinen Grund für eine Verwirrung oder einen Downvote hier .. – pinaki

+0

Nur um zu klären, habe ich nicht den Downvote ausgegeben. Ich war mir aufgrund Ihrer Frage nicht sicher, wie Sie auf diese andere Datei zugegriffen haben. Ist es enthalten oder wird es remote gelesen? – DeaconDesperado

Antwort

1

Wenn Sie innerhalb einer Funktion sind (d. H. Nicht im globalen Gültigkeitsbereich), kann get_defined_vars() eine gute Wette sein. Sie müssen die Datei nur in einen geschlossenen Bereich einschließen und ihre Schlüssel zurückgeben, um alle Variablennamen in der Datei zu erhalten.

+0

genau was ich brauchte .. danke .. – pinaki

2

Sie könnten eine andere "global" Array vorstellen

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

und serialize es

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

Wenn Sie die Datei zu lesen, nur unserialize seinen Inhalt, so dass Sie die "global" Array mit seinen Unter - Ändern Sie die benötigten Werte, serialisieren Sie sie und schreiben Sie sie zurück.

Denken Sie daran, dass dies ein großes Leistungsproblem sein kann, wenn Sie große Arrays schreiben.

+0

+1 .. die Methode ist gut, aber das Problem ist, dass ich den Dateiinhalt nicht ändern kann, um ein anderes Array hinzuzufügen (sonst wäre es sehr wenig Aufwand, den Wert zum Array selbst hinzuzufügen). Gibt es eine Möglichkeit, alle Array-Werte aus der Datei abrufen und sie ändern und schreiben sie zurück? – pinaki

+0

Wie meinst du "kann den Dateiinhalt nicht ändern, um ein anderes Array hinzuzufügen"? – DrColossos

+0

Wenn Sie "Werte innerhalb der Datei ändern" meinen, dass sie ihre neuen Werte in der Datei speichern, nachdem die Anfrage beendet wurde und das Skript ausgeführt wurde, wäre die einzig mögliche Antwort das Speichern mit einem beliebigen Mechanismus, zB einer flachen Textdatei die Art und Weise, wie Dr.Colossos beschrieben hat, oder eine Datenbank für den späteren Abruf. Ist das was du meinst, wenn du die Datei änderst? Sie möchten die physikalischen Werte, die in der test.php enthalten sind, tatsächlich ändern, indem Sie sie permanent in den Code schreiben und diese beibehalten? – DeaconDesperado

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

es ist schon 5 Jahre her, aber ich möchte einen einfachen Weg geben, der für mich funktioniert.

Verwandte Themen