SYNOPSIS mixed arr[index]; int str[index]; mixed * arr[from..to]; string str[from..to]; BESCHREIBUNG Liefert ein Element aus einem Array oder String (erste Form), oder eine Teilmenge (zweite Form). Die Indizes , und sind durchnummeriert von 0 bis strlen()-1 bzw. sizeof()-1. Wenn ein als ') bzw. sizeof(). Wird weggelassen, beginnt die Teilmenge mit dem ersten Element. Wird weggelassen, endet die Teilmenge mit dem letzten Element. In der ersten Form muss innerhalb der Grenzen des Strings / Arrays sein, sonst wird ein Laufzeitfehler (RTE) verursacht. In der zweiten Form werden die Indizes an die Groesse des Strings / Arrays angepasst. Wenn groesser ist als oder beide ausserhalb der Groesse des Strings / Arrays liegen, wird ein leerer String "" bzw. ein leeres Array ({}) zurueck geliefert. Die Notation als Closure ist entsprechend: [index] -> ({'#[, arr, index }) [ ({'#[<, arr, index }) [from..to] -> ({'#[..], arr, from, to }) [ ({'#[<..], arr, from, to }) [from.. ({'#[..<], arr, from, to }) [ ({'#[<..<], arr, from, to }) BEISPIELE foo = ({ 1, 2, 3, 4 }); str = "test"; foo[1] -> 1 str[1] -> 'e' == 101 foo[1..2] -> ({ 2, 3 }) str[1..2] -> "es" foo[2..1] -> ({ }) str[2..1] -> "" foo[0..<2] -> ({ 1, 2 }) str[0..<2] -> "tes" foo[..<2] -> ({ 1, 2 }) str[..<2] -> "tes" foo[<3..] -> ({ 2, 3, 4 }) str[<3..] -> "est" foo[1] = 5 -> foo == ({ 1, 5, 3, 4 }) foo[1..2] = ({ 5, 6, 7 }) -> foo == ({ 1, 5, 6, 7, 4 }) foo[1..2] = ({ }) -> foo == ({ 1, 4 }) str[1] = 'a' -> str == "tast" str[1..2] = "bar" -> str == "tbart" str[1..2] = "" -> str == "tt" GESCHICHTE slice_array() ist die alte Form der []-Operatoren fuer Arrays, extract() ist die alte Form der []-Operatoren fuer Strings. BEIDE VARIANTEN SIND VERALTET, WERDEN NICHT MEHR UNTERSTUETZT UND SOLLTEN DESHALB NICHT MEHR VERWENDET WERDEN. Die Syntax fuer 'rueckwaerts zaehlen vom letzten Element' hat sich von Version 3.1.J zu 3.1.K geaendert von '-1' zu '<1'. Auch ist seit dann foo[0..-1] ein leeres Array bzw. ein leerer String. SIEHE AUCH member(E), sizeof(E), slice_array(E)