Cruz: Listeneinträge löschen

Hallo!

Ich weiß, daß man mit pop() und shift() das letzte und das erste Element einer Liste löschen kann. Aber wie kann man denn ein Element mitten in der Liste löschen, so daß die anderen Elemente nachrücken?

Wenn man $Liste[x]=""; verwendet, wird der Listeneintrag lediglich leer, aber er wird nicht gelöscht. Das gibt unangenehme Leerzeilen bei der Ausgabe.

Gruß
Cruz

  1. hi!

    Ich weiß, daß man mit pop() und shift() das letzte und das erste Element einer Liste löschen
    kann. Aber wie kann man denn ein Element mitten in der Liste löschen, so daß die anderen
    Elemente nachrücken?

    splice @array, offset [, länge [, liste] ]

    Entfernt die durch offset und länge gekennzeichneten Elemente aus @array udn ersetzt sie durch liste (falls angegeben).

    bye, Frank!

    1. splice @array, offset [, länge [, liste] ]

      Entfernt die durch offset und länge gekennzeichneten Elemente aus @array udn ersetzt sie durch liste (falls angegeben).

      bye, Frank!

      Hi Dank dir aber kannst du vielleicht ein Beispiel dazu angeben? Ich weiß nicht was offsetund länge meinen.

      Cruz

      1. hi!

        splice @array, offset [, länge [, liste] ]
        Hi Dank dir aber kannst du vielleicht ein Beispiel dazu angeben? Ich weiß nicht was
        offsetund länge meinen.

        offset ist die Startposition, länge die Anzahl der zu löschenden Elemente.

        Beispiel:
          splice @array, 1; löscht aus @array das zweite Element, also $array[1].
          splice @array, 2, 3; löscht aus @array das dritte bis fünfte Element.

        bye, Frank!

        1. Hallo ihr zwei!

          splice @array, offset [, länge [, liste] ]
          Hi Dank dir aber kannst du vielleicht ein Beispiel dazu angeben? Ich weiß nicht was
          offsetund länge meinen.

          offset ist die Startposition, länge die Anzahl der zu löschenden Elemente.

          Beispiel:
            splice @array, 1; löscht aus @array das zweite Element, also $array[1].

          Gibt man keine Länge mit an, so wird der Bereich bis zum Ende des Arrays gelöscht bzw. durch 'liste' ersetzt. Richtig wäre hier also:
          splice @array, 1, 1;

          Man kann als Offset auch negative Werte angeben, wodurch man sowas wie 'dritter von hinten' angeben kann ...

          Jörk

          1. hi!

            Gibt man keine Länge mit an, so wird der Bereich bis zum
            Ende des Arrays gelöscht bzw. durch 'liste' ersetzt.

            Ups, tatsächlich. Ich sollte meiner Kurzreferenz wohl nicht zu sehr trauen. Das wird dort mit keinem Wort erwähnt :-(

            bye, Frank!

  2. Falls Du viel löschst + anlegst, dann nehme ggf. anstatt einer Liste einen Hash - da kann man löschen.