Teile aus Array löschen.

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

  • Teile aus Array löschen.

    Guten Abend!

    Ich hab ein Array mit verschiedenen Einträgen.
    Nun möchte ich Teile aus dem Arrey löschen, mit der Absicht das die anderen Einträge nachrücken.

    Bps. Array
    [0] = Esel
    [1] = Vogel
    [2] = Hund

    Wenn ich nun [1] Vogel, lösche, soll [1] den Wert Hund erhalten.

    [0] = Esel
    [1] = Hund

    Gibt es eine Möglichkeit? Das Array ist in einer Datei gespeichert und wird noch von anderen Teilen des Programmes verwendet, desshalb kann ich keine "leeren" Variablen darin gebrauchen [1] darf nicht " " sein.

    P.S. (foreach schleife hilft mir also glaube ich nicht weiter, aber vielleicht hab ich das mit der foreach auch nur falsch verstanden)

    Bin ein N00b, brauche Hilfe, zähle auf euch Währe euch sehr verbunden falls ihr mir die Lösung anschaulich (mit Beispiel) erklären könntet!

    mfg amarok

  • #2
    was ist an foreach() so verkehrt?

    PHP-Code:
    echo '<pre'>;

    $arr = array();
    $arr[] = 'Esel';
    $arr[] = 'Vogel';
    $arr[] = 'Hund';
    $arr[] = 'Katze';
    $arr[] = 'Maus';

    // vorher
    print_r($arr);
    echo 
    '<br />'

    // eintrag entfernen.
    unset($arr[1]);

    // nachher
    print_r($arr);
    echo 
    '<br />'

    // foreach ohne key
    foreach($arr as $val)
        echo 
    $val.'<br />';

    // foreach mit key
    foreach($arr as $key => $val)
        echo 
    $arr[$key].'<br />';

    echo 
    '</pre'>; 
    steht alles im manual .....
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      und damit die index-numerierung durchgehend bleibt, kann man das ganze in ein anderes, neues array umfüllen.

      oder mit array_slice() einen weg finden.

      Kommentar


      • #4
        das ist im prinzip schon richtig.

        aber ich will nicht jede datei verändern, die auf die datei zugreift.

        die datei wird bisher mit einer anderen schleife ausgelesen, und desshalb muss ein gelöschter Wert im Arrey ein nachrücken der anderen bewirken, sonst geht es nichtmehr =(
        Zuletzt geändert von amarok; 19.12.2004, 18:29.

        Kommentar


        • #5
          1. bei unset wird nichts ersetzt, der index 1 samt seinem wert wird gelöscht
          2. so undurchschaubar ist der kleine syntax-fehler nicht, achte auf die setzung der hochkommata, semikolon, etc.

          Kommentar


          • #6
            jap hab den fehler jetzt bemerkt *g* problem siehe edit des vorigen postes

            und damit die index-numerierung durchgehend bleibt, kann man das ganze in ein anderes, neues array umfüllen.
            das hört sich schon vernüntiger an =) gibt es dafür keine fertige funktion?

            Kommentar


            • #7
              man kann das in der ersten foreach-schleife von abraxax machen, indem man die werte dem $neuenarray[] zuweist. ohne index in den eckigen klammern wird die nummerierung durchgehend erhöht.

              Kommentar


              • #8


                ich dreh noch ab. sorry dass ich euch so nerven muss.

                Was ist an

                PHP-Code:
                    array_push ($newarray$arr[$val]); 
                falsch? *grml*

                wenn ich danach das $newarray ausgebe, hat es zwar 4 werte, die sind allerdings alle " " =(

                Kommentar


                • #9
                  eigentlich nichts. trotzdem vermute ich, dass die variable $val den wert und nicht den index speichert.

                  aber wozu so umständlich? versuchs mit ohne index, wie ich's vorgeschlagen habe.

                  Kommentar


                  • #10
                    PHP-Code:
                        array_push ($newarray$arr[]); 
                    wenn du so meinst... da gibt es einen parse error

                    Kommentar


                    • #11
                      $arr[]
                      ist das logisch???

                      Kommentar


                      • #12
                        keine ahnung, ich kann kaum php programmieren, sonst hätte ich ja vermutlich nich solche probs ich dachte innerhalb der schleife sollte es sinn geben.

                        Kommentar


                        • #13
                          OffTopic:
                          wie soll man da mit dem rauchen aufhören?
                          PHP-Code:
                          $newarray[] = "irgendwas"// in einer schleife von 0 bis 4 würde ein 
                          //array mit durchgehender indexierung mit dem wort "irgendwas" füllen. 

                          Kommentar


                          • #14
                            muss ich das jetzt kapiert haben? kannst wieder rauchen gehn, ich hab die variablen verwechselt.

                            PHP-Code:
                            foreach($arr as $val)
                            {
                                echo 
                            $val.'<br />';
                                
                            array_push ($newarray$val);

                            so gehts =)

                            Kommentar


                            • #15
                              Original geschrieben von amarok
                              aber ich will nicht jede datei verändern, [color=red]die auf die datei zugreift.[/color]
                              sehe ich das richtig, dass du die daten dann nur in einer datei speichern willst?

                              warum schreibst du das array nicht einfach mit
                              PHP-Code:
                              fwrite($fpimplode("\n"$arr)); 
                              in deine datei?
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X