Eisbär: Nur einzelne variablen ändern !?

Hallo

Wie kann ich mit PHP einzelne Variablen ändern?

Beispiel: Ich habe eine Textdatei mit folgendem Inhalt:

<?php

$1 = "runder";
$banane = "katze";
$hund= "maus";

?>

Mit welchem Befehl kann ich nun z.B. die Variable $banane ändern?
Ich weiss aber nicht, dass im Moment der Wert "katze" ist.

Wenn ich fwrite() verwende, kann ich nur entweder alles überschreiben oder was hinzufügen.

Es sind auch unregelmäßige Variablen, es kommen also auch manchmal welche dazu (manuell eingetippt)

Wie geht das?

Weiss das jemand???

Danke für jede Hilfe.

  1. Hallo

    Wie kann ich mit PHP einzelne Variablen ändern?

    Beispiel: Ich habe eine Textdatei mit folgendem Inhalt:

    <?php

    $1 = "runder";
    $banane = "katze";
    $hund= "maus";

    ?>

    Also ganz einfach:
    -Datei zum lesen öffnen
    -Daten einlesen..
    -Variabele neu setzen $var="Doof";
    daten wieder reinschreiben..
    befehle:
    fopen()
    file()
    fwrite()
    fclose()??
    Erklaärungen hier http://de3.php.net/manual/de/print/function.file.php
    Ansonsten RTFM ;-)

    TomIRL

  2. Hallo,

    <?php

    $1 = "runder";
    $banane = "katze";
    $hund= "maus";

    ?>

    Mit welchem Befehl kann ich nun z.B. die Variable $banane ändern?

    $banane = "wasimmerduwillstdasseseinebananesei";

    Das ist eine simple Zuweisung, dafür benötigst du keine Funktion. Wenn du einer Variablen den Rückgabewert einer Funktion übergeben willst, dann sieht das so aus:

    $rueckgabe = funktionsaufruf();

    Du solltest du wirklich erst einmal http://www.php.net/manual/de/ zu Herzen nehmen.

    Grüße aus Barsinghausen,
    Fabian

    1. Ich will aus einer anderen Datei(z.B. testdatei.php) diesen Wert ändern, und zwar immer wenn sie (testdatei.php) aufgerufen wird. Das geht nicht so einfach. !?

      1. Hallo Eisbär,

        Ich will aus einer anderen Datei(z.B. testdatei.php) diesen Wert ändern, und zwar immer wenn sie (testdatei.php) aufgerufen wird. Das geht nicht so einfach. !?

        Nein. Es ist normalerweise recht sinnfrei, eine Datei so anzulegen wie du es im Ausgangsposting zeigst, wenn du sie nicht durch den Parser jagst[1]. Wenn du Zuweisungen speichern willst, dann nimm entweder eine Datenbank, oder verwende die (un)serialize-Funktionen von PHP um Variablen oder Arrays in Dateien zu speichern:

        http://de3.php.net/manual/de/function.serialize.php
        http://de3.php.net/manual/de/function.unserialize.php

        Grüße aus Barsinghausen,
        Fabian

        [1] Wenn du die Datei doch parsen lässt, was hindert dich daran, eine Funktion einzubauen, die explizit den Wert einer bestimmten Variable ändert?

  3. Hallo,

    <?php

    $1 = "runder";
    $banane = "katze";
    $hund= "maus";

    ?>

    Frage: Möchtest Du die Datei per include() in ein PHP-Script reinholen weil Du die Start- und End-Tags mit angibst? Falls Du die Variablen nur speichern möchtest, würde ich das ganze anders angehen.

    Mit welchem Befehl kann ich nun z.B. die Variable $banane ändern?
    Ich weiss aber nicht, dass im Moment der Wert "katze" ist.

    Wie oben bereits geschrieben würde sich evt. grundsätzlich eine andere Lösung anbieten. Du kennst Arrays? -> http://de.php.net/array Ein assoziatives Array ist IMHO u.a. für einen solchen Zweck geschaffen, d.h. der Key wäre die Bezeichnung Deiner Variablen und der Value eben der Wert der Variablen. Über den Key kannst Du dann gezielt die Werte einer bestimmten Variablen ansteuern und ausgeben, ändern oder auch löschen.

    Um allerdings ein Array in eine Textdatei zu schreiben muss das Array serialisiert und bei der Anwendung wieder deserialisiert werden, siehe auch: http://de3.php.net/manual/de/function.serialize.php und http://de3.php.net/manual/de/function.unserialize.php

    Hoffe ich konnte Dir ein wenig helfen,
    Grüsse AndreD

  4. Hello,

    Wie kann ich mit PHP einzelne Variablen ändern?

    Beispiel: Ich habe eine Textdatei mit folgendem Inhalt:

    <?php

    $1 = "runder";
    $banane = "katze";
    $hund= "maus";

    ?>

    Mit welchem Befehl kann ich nun z.B. die Variable $banane ändern?
    Ich weiss aber nicht, dass im Moment der Wert "katze" ist.

    Wenn ich fwrite() verwende, kann ich nur entweder alles überschreiben oder was hinzufügen.

    Es sind auch unregelmäßige Variablen, es kommen also auch manchmal welche dazu (manuell eingetippt)

    Wie geht das?

    Weiss das jemand???

    Das weiß jemand... ;-)

    Ich fasse mal zusammen:
    Du möchtest in einer Textdatei Variablen speichern.
    Der Namen der Variablen, der Typ und  die Anzahl wechselt manchmal.

    Dateien sind Stream-Variablen. Das bedeutet, dass dort alles in einem String (Stream) hintereinander steht. Es gibt in wirklichkeit keine Zeilen und erst Recht keine Variablen. Man muss also wissen, welches Byte zu welchem Wert gehört und in welcher Reihenfolge.

    PHP bietet hierfür zwei Möglichketien an:
    pack()
    http://de2.php.net/manual/de/function.pack.php
    serialize()
    http://de2.php.net/manual/de/function.serialize.php

    Da Datenmengen und ein bisschen Overhead in der Rechenzeit heute nicht mehr soviel ausmachen, wie noch vor 20 Jahren, würde ich die zweite Variante bevorzugen.

    Man baut sich im Script also einfach ein Array, nennen wir es $_sitzung, und speichert in diesem Array seine Daten.

    $_sitzung['wert1'] = "mein Vorname";
    $_sitzung['wert2'] = "unbekannt";
    $_sitzung['wert3'] = "Hans-Walter";

    Und wenn man die diese Daten in einer datei speichern will, lässt man das Array vorher in einen Stream umwandeln:

    $stream = serialize($_sitzung);

    Diesen String kann man dann mit

    $fh = fopen("dateiname","w");
    fwrite($fh, $stream);
    fclose();

    in eine Datei schreiben.

    Mit

    $fh = fopen("dateiname","r");
    $stream = fread($fh, filesize("dateiname"));
    flose(&fh);
    $_situng = unserialize($stream);

    kann man sich diese Datgen wiederbeschaffen.

    Wenn man nun mehrere Datenssätze auf Diese Weise abscpeichern will, muss man sich Gedanken über ein geeignetes Trennzeichen zwischen den Datensätzen machen. Das Zeichen darf im serialisierten Datenstrom selber nicht mehr vorkommen. Die Datensätze sind schließlich alle verschieden lang. Oder man sorgt durch Auffüllen mit neutralen Zeichen dafür, dass alle Datensätze die gleiche Länge haben.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen