PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array Elemente vertauschen


N'Koto Zinde
09.09.2007, 15:05:16
Hallo,

mal ne Frage, weil ich dazu nichts gefunden habe:
Gibt es eine Funktion, die mir zwei Elemente in einem Array vertauscht? Oder muss ich mir da selber was basteln?

Gruß.

Opendix
09.09.2007, 15:09:22
$temp = $arr[0];
$arr[0] = $arr[1];
$arr[1] = $temp;

N'Koto Zinde
09.09.2007, 15:50:25
naja, das wäre jetzt selbst gebastelt. ich dachte nur vielleicht gibts da schon nen fertigen befehl für, das häts mir einfacher gemacht, da es für meine anwendung nicht ganz so simpel ist. aber offensichtlich muss ich doch anfangen zu basteln.
danke trotzdem.

Opendix
09.09.2007, 16:40:18
öhm... austauschen von Array-Elementen ist doch immer genau gleich simpel?

N'Koto Zinde
09.09.2007, 17:59:28
ja das schon, aber drumrum passiert bei mir noch mehr :-)

z0iD
09.09.2007, 18:45:26
Ja aber Du kannst es doch darauf abstrahieren. Mach Dir doch einfach selbst die zugehörige Funktion.
function swap_array_elements($rg ,$i1, $i2) {
$erg1 = $rg[$i1];
$rg[$i1] = $rg[$i2];
$rg[$i2] = $erg1;
return $rg;
}

Warum diese Frage jedoch im fortgeschrittenen Forum steht ist mir schleierhaft.
Daher nochmal in komplizierter:
function permute_array($fnHash, $rg, $iStartWith) {
$i = $iStartWith;
if (!array_key_exists($rg,$i))
return $rg;
$e = $rg[$i];
$i = $fnHash($rg,$i);
unset($rg[$i]);
while (array_key_exists($rg,$i)) {
$temp = $rg[$i];
$rg[$i] = $e;
$e = $temp;
$i = $fnHash($rg,$i);
}
$rg[$i] = $e;
return $rg;
}

Wenn Du nun eine Funktion an $fnHash übergibt, die jedem Element einen neuen Index zuweist, dann kannst Du mit dieser Funktion Dein Feld beliebig durcheinanderwürfeln. *g*

N'Koto Zinde
10.09.2007, 00:46:36
jaja is ja gut.
meine anwendung beschränkt sich nicht nur auf das vertauschen von elementen in einem array, sondern auch noch ein bisschen mehr. das auszubreiten wäre jetzt unnötig, da das problem ja lösen kann. ich wollte vorher nur sichergehen ob es nicht schon ein paar fertige funktionen dafür gibt, um mir nicht unnötig mühe zu machen.
mir wäre damit genung geholfen. danke.