array = $array; //Index über die Schlüssel legen $this->index = array_keys($array); } /** * ändert die Reihenfolge. Beginnt den Array mit dem Eintrag mit der Position $offset * des Ausgangsarrays und hängt die vorgelagerten Einträge in unveränderter Reihenfolge hinten an * @param $offset Long * @return Array oder false */ public function byOffset($offset){ //Test ob $offset nicht grössr als die Anzahl items ist if(count($this->array)-1 < abs($offset)) return false; //Der Anfang des neuen Arrays extrahieren $startArray = array_slice($this->array, $offset, count($this->array) - $offset, true); //Das Ende des neuen Arrays extrahieren $endArray = array_slice($this->array, 0, $offset, true); //Die beiden Teile zusammensetzen und zurückgeben return $startArray +$endArray; } /** * ändert die Reihenfolge analog zu rorderByOffset. sucht jedoch nach dem key * @param $startKey Variant * @return Array oder false */ public function byKey($startKey){ //Das Offset des Keys bestimmen $offset = array_search($startKey, $this->index); //Die reorder-Funktion nach Offset anwenden return ($offset ===false) ? false : $this->byOffset($offset); } /** * ändert die Reihenfolge analog zu rorderByOffset. sucht jedoch nach dem Wert * @param $startValue Variant * @return Array oder false */ public function byValue($startValue){ //Schlüssel des Wertes bestimmen $key = array_search($startValue, $this->array); //die reorder-Funktion nach key anwenden return ($key ===false) ? false : $this->byKey($key); } protected static function getInstanceOf($array){ return new self($array); } public static function staticByOffset($array, $offset){ return self::getInstanceOf($array)->byOffset($offset); } public static function staticByKey($array, $startKey) { return self::getInstanceOf($array)->byKey($startKey); } public static function staticByValue($array, $startValue){ return self::getInstanceOf($array)->byValue($startValue); } } ?>