Array-Elemente rotieren lassen

Jennesta

Erfahrenes Mitglied
Hey,
ich habe versucht mir eine Funktion zu schreiben, die auf beliebig große Arrays anwendbar ist. Logischerweise aber mind. 2 Elemente besitzen muss.

z.B. ist ein Array wie folgt gegeben(hier jetzt jedes Element durch Komme getrennt).
{A,B,C,D,E,F,G}

Daraus soll die Funktion immer das erste Element an seiner Stelle lassen und alle anderen sollen rotieren, sodass beim ersten Anwenden der Funktion folgendes wird:
{A,C,D,E,F,G,B}
und beim weiteren anwenden
{A,D,E,F,G,B,C}

Diese Funktion sah bei mir wie folgt aus

PHP:
function shuffle_array($teams) {
		$temp = $teams;
		$temp[0] = $teams[0];
		for($i=1;$i<($anzahlteams-1);$i++) {
			$temp[$i] = $teams[$i+1];
		}
		$temp[$anzahlteams-1] = $teams[1];
		return $temp;
	}

Wenn ich dies ausführe, dann erhalte ich ein Array mit einem Element mehr wie das ursprüngliche. Das letzte (neue) Element hat dann den Key [-1] und den Wert des $teams[1] wie also auch am Ende gesetzt werden soll.
Danach habe ich mal die Zeile
PHP:
$temp = $teams;
weggelassen, aber das hat das ganze nur so geändert, das nur noch 2 Elemente im Array $temp existieren.

Ausgeführt wird die Funktion im übrigen so:

PHP:
$teams = shuffle_array($teams);

Ich wäre sehr froh, wenn mir jemand bei dieser Funktion helfen kann, denn darauf baut mein ganzen weiteres Programm auf.

mfg Jennesta
Nun ist es aber so, dass diese Funktion nicht klappt wie sie soll.
 
PHP:
function shuffle_array($teams) {
	$teams[count($teams)] = $teams[1];
	unset($teams[1]);
	foreach($teams AS $val) {
		$temp[] = $val;
	}
	return $temp;
}

Viele Wege usw...
 
Hey vielen Dank,
habe mir zwar einige Array-Funktionen angeguckt, aber bei dieser muss ich wohl gedacht haben, dass sie mir nichts bringt.
Aber ist genau gegenteilig, konnte hier nun die Funktion erfolgreich benutzen
Sieht nun so aus.

PHP:
function shuffle_array($teams) {
	$temp[0] = $teams[0];
	$temp2 = array_slice($teams, 2);
	foreach($temp2 as $temp2) {
		$temp[] = $temp2;
	}
	$temp[] = $teams[1];
	return $temp;
}

Dankesehr
 
Ups, sorry mal total verlesen ;)
Jo die Funktion passt so.
Sorry fürn Wastepost..
MFG xErY
 
Zuletzt bearbeitet:
Zurück