Jan: array ersetzen

hallo,

*sorry, aber ne DAU-Frage ;-)
Wenn ich nen Datensatz einer .txt wie volgt in Parts zerlegt habe, wie kann ich dann zB parts[1] überschreiben?

$parts = explode("|", $data[$i]);
    $name = urldecode($parts[0]);
    $last = urldecode($parts[1]);

Danke!

  1. Hallo,

    versteh zwar die Frage nicht wirklich, aber:

    $parts[1] = "neuer Inhalt";

    mfg,
      Philip

    --
    :::::::: http://www.metrox.de ::::::::
    1. :-)

      Ja, nur hätte ich das Ganze nun noch gerne zurück in die .txt geschrieben, das is mein Prob!

      MfG
      Jan

      1. Hallo,

        :-)

        Ja, nur hätte ich das Ganze nun noch gerne zurück in die .txt geschrieben, das is mein Prob!

        Achso. Jetzt versteh ich.

        Da gibts die FUnktion implode(), die genau das Gegenteil von explode bewirkt http://de.php.net/function.implode. Damit setzt du das Array einfach wieder als String zusammen und schreibst es in die Textdatei.

        mfg,
          Philip

        --
        :::::::: http://www.metrox.de ::::::::
        1. Hey, nochma ich :-/

          Ich begann mein Posting mit dem Wort DAU *sfg*
          Hab nich wirklich Ahnung von PHP, und bin begeistert wie weit man ohne kommt :-) -also bis auf mein Prob jetzt.

          Wie ich das array zusammensetzte kam ich schon dahinter, aber wie speicer ich es ab? Ich will nicht, dass es hinter die anderen gesetzt wird, also letztlich doppelt ist, oder die gesamte Dtei überschreibt, also allein in der Datei steht, sonder ich will das alte ersetzen.
          Wie sage ich php öffne ie Datei, gehe zu dem entsprechenden Satz und ersetze das array[1] durch das neu definierte?!?!?

          Hoffe das war deutlich
          Danke!

          1. Hallo,

            Ich begann mein Posting mit dem Wort DAU *sfg*

            Wie sage ich php öffne ie Datei, gehe zu dem entsprechenden Satz und ersetze das array[1] durch das neu definierte?!?!?

            woher bekommst du eigentlich $data[$i]?? Ich konnte das jetzt im Code unten nicht berücksichtigen...

            [lese Datei in $data]

            $parts = explode("|", $data);
            $name = urldecode($parts[0]);
            $last = urldecode($parts[1]);

            $parts[1] = "neuer Inhalt";

            $new_data = implode("|", $parts);

            $file = fopen("file.txt", "w");
            fwrite($file, $new_data);
            fclose($file);

            Hoffe ich konnte ein bisschen helfen. Wenn nicht musst du etwas genauer sagen, was du machen willst und woher $data[$i] kommt?

            mfg,
              Philip

            --
            :::::::: http://www.metrox.de ::::::::
            1. OK, genau so weit war ich bisher auch, er überschreibt aber somit die ganze user.txt :-(
              Deren Inhalt sieht wie folgt aus:
              user1|info1
              user2|info2
              user3|info3
              ...

              ausgelesen wird so:

              $data = file("user.txt");
              $entry_count = count($data);
              if (empty($index)) $index = 0;

              for ($i = $index; $i < $entry_count; $i++)
                 {
                  $parts = explode("|", $data[$i]);
                  $nr = $entry_count -$i;
                  $name = urldecode($parts[0]);
                  $last = urldecode($parts[1]);
              ...
                 }

              dann z.B

              if ($name == "user2"){

              $parts[1] = "info2_neu";

              $new_data = implode("|", $parts);

              $file = fopen("user.txt", "w");
              fwrite($file, $new_data);
              fclose($file);
              }

              Nur so sieht meiner user.txt danach so aus:

              user2|info2_neu

              und nicht so:

              user1|info1
              user2|info2_neu
              user3|info3

              1. Hallo,

                if (empty($index)) $index = 0;
                  for ($i = $index; $i < $entry_count; $i++)

                Geht auch einfacher: for($i=0; $i<$entry_count; $i++)

                {
                    $parts = explode("|", $data[$i]);
                    $nr = $entry_count -$i;

                Wozu ist $nr ?

                $name = urldecode($parts[0]);
                    $last = urldecode($parts[1]);
                ...
                   }

                for($i=0; $i<$entry_count; $i++) {
                  $parts = explode("|", $data[$i]);
                  $name = urldecode($parts[0]);
                  $last = urldecode($parts[1]);

                [...]

                $parts[1] = "neu";

                $new_data[$i] = implode("|", $parts);
                }

                $new_content = implode("\n", $new_data);

                $file = fopen("user.txt", "w");
                fwrite($file, $new_content);
                fclose($file);

                Nur so sieht meiner user.txt danach so aus: [...]

                Ist ja klar. Liegt am $data[$i] mit dem ich nichts anfangen konnte.

                So müssts klappen. Habs aber nicht getestet.

                mfg,
                  Philip

                --
                :::::::: http://www.metrox.de ::::::::