Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeile aus Array löschen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeile aus Array löschen

    Hi,
    ich suche schon seit Tagen nach einer Lösung - auch Herr Google konnte mir nicht helfen.
    Ich habe eine Textdatei geschrieben (Name und ID) die folgendermaßen aussieht:
    Müller; 12584;
    Meier; 45187;
    Schmitt; 45784;
    Jetzt habe ich alle Daten in ein Array eingelesen und der user hat sich den "MEIER-SATZ" anzeigen lassen. Jetzt will ich diesen Satz aus dem Array löschen und die Datei dann neu (ohne den MEIER-Satz) schreiben.

    Aber WIE ???

  • #2
    PHP-Code:
    $array = array("aaa","bbb","ccc","ddd");

    if ( 
    FALSE !== ($index=array_seach('ccc',$array)))
    {
    unset (
    $array[$index]);
    }

    $fp fopen('die_datei.txt''w');
    foreach(
    $array as $valuesfputs($fp$values."n");
    fclose($fp); 
    hab dir mal schnell was zusammen gegooglet. Variablen / Array Indexes leert man mit unset und mit array_search() durchsucht man das array. Dann in einer Schleife alles neu in die Datei schreiben.

    Kommentar


    • #3
      Schon fast klasse )

      aber kann ich anstatt

      if ( FALSE !== ($index=array_seach('ccc',$array)))

      auch

      if ( FALSE !== ($index=array_seach($aufnr,$array))) //in Aufnr steht CCC drinn


      schreiben ???

      Kommentar


      • #4
        An eine Funktion solltest du auch Variablen als Parameter übergeben können, ja

        Kommentar


        • #5
          Das Schreiben des neuen Array funktioniert (die Sätze beginnen mit "n" ?????),

          der "alte Satz" ist aber immer noch dabei.

          Kommentar


          • #6
            Das «$values."n"» in moveax1's Code solllte eigentlich ein «$values . "\n"» sein, das Forum schluckt die Backslashes im Code.
            [man]array_search()[/man], so wie du es vermutlich verwendest (ich kenne ja deine Code nicht) dürfte nicht funktionieren, da du ja nach dem ganzen Begriff im Array suchen musst. Für die Suche nach einem Teilbegriff musst du einzeln durch den Array gehen. Das könnte dann etwa so aussehen
            PHP-Code:
            $daten file('textdatei.txt');

            $fp fopen('textdatei.txt''w');
            foreach (
            $daten as $zeile){
                if(!
            preg_match('/^Meier/U'$zeile)){
                    
            fputs($fp$zeile);
                }
            }
            fclose($fp); 
            Natürlich gibts auch andere Möglichkeiten.

            Kommentar


            • #7
              PHP-Code:
              // Auslesen
              $daten file ($filename);

              // Multireplace
              $replaces = array ('Maier' 'Meier');

              // regulären Ausdruck erstellen
              foreach ($replaces as $key => $item)
                {
                
              $replaces[$key] = '#^' $item '.*$#';
                }

              // Ersetzen
              $daten preg_replace ($replaces '' $daten);

              // Zurückschreiben
              file_put_contents ($filename implode ('' $daten)); 

              Kommentar


              • #8
                Kann ich denn auch nach einem bestimmten Textabschnitt suchen und ab diesem alles was dahinter/darunter kommt aus dem array löschen?

                Gibts da ne Idee?

                Kommentar


                • #9
                  Das geht mit dem [MAN]array_slice[/MAN] oder dem [MAN]array_splice[/MAN] Befehl.

                  Kommentar


                  • #10
                    kann ich die array_slice und array_splice funktionen auch problemlos auf ausgelesene datenbank-arrays verwenden...?

                    Kommentar


                    • #11
                      Warum nicht?

                      Aber wenn es sich um Datenbank Ergebnisse handelt, kanns du genauso gut deine Abfrage etwas einschränken...

                      Kommentar


                      • #12
                        ja da hat du prinzipiell recht aber ich hatte gestern das prob das ich auf die erste spalte eines datensatz arrays in ein a-tag mit href also verlinken wollte den rest aber nicht und..klar ich könnte zwei verschiedene abfragen machen oder wie ich über eine for-schleife und ein nummerischen ausgelesenes array...oder dritte möglichkeit über die array-slice splice funktionen...die vielleicht ein wenig eleganter sind oder ?

                        so hab ich das gelöst...

                        //Datensaetze für Botschaft auslesen
                        while($datensatz_botschaft = mysql_fetch_row($ergebnis_botschaft))
                        {
                        echo "<tr>";
                        echo "<td>"."<a href = \"$datensatz_botschaft[0]\">".$datensatz_botschaft[0]."</a>"."</td>";
                        for($i = 1; $i < mysql_num_fields($ergebnis_botschaft); $i++)
                        {
                        echo "<td>".$datensatz_botschaft[$i]."</td>";
                        }
                        echo"</tr>";
                        }

                        das alles sollte noch in tabellen angezeigt werden deshalb die tabellen tags...

                        Kommentar

                        Lädt...
                        X