Veröffentlicht 29. November 200618 j Hi zusammen, ich hab folgendes Array: $arr = array('id','name'); [/PHP] Wie kann ich nun ein neues Element "xyz" an die Stelle des Elements "name" einfügen, sodass "name" danach an der Stelle 2 steht? Ergebnis soll also folgendes sein: [PHP] $arr = array('id','name'); // aufruf irgendeiner Funktion var_dump($arr); // Ausgabe: array(0 => 'id', '1' => 'xyz', '2' => 'name') Danke und Gruß, Markus
29. November 200618 j Wie kann ich nun ein neues Element "xyz" an die Stelle des Elements "name" einfügen, sodass "name" danach an der Stelle 2 steht? Eine eingebaute Funktion ist mir da nicht bekannt, aber: // Fügt $value in $array ein, an der Stelle $index function array_insert($array, $index, $value) { return array_merge(array_slice($array, 0, $index), $value, array_slice($array, $index)); } [/php]
29. November 200618 j Wenn es die erste Stelle sein soll, dann kannst du array_unshift() benutzen. Wenn es wahlfrei sein soll, must du dir wohl selbst was einfallen lassen.
29. November 200618 j Als Hinweis sein hinzugefügt, dass das ganze so nur in PHP 4 Funktioniert. Siehe dazu die Warnungen auf PHP: array_merge - Manual Für PHP5 bzw als Versionsunabhängige Lösung würde das ganze dann nur so gehen: // Fügt $value in $array ein, an der Stelle $index function array_insert($array, $index, $value) { return array_merge(array_slice($array, 0, $index), array($value), array_slice($array, $index)); } [/PHP] Durch diese Änderung können nun auch Arrays als solche hinzugefügt werden, ohne dass nur dessen Elemente eingefügt werden. z.b. [PHP]$arr = array('xyz','www'); $arr = array_insert($arr, 3, array('abc','def')); Gruß, Markus
29. November 200618 j Hi, hab mal eine Funktion gebaut (ob die besonders effektiv ist weiß ich nicht). Mußt bei Angabe der Position dran denken die reale Position anzugeben ('name' ist in dem Fall in $arr an Position 2 und nicht in Position 1). <?php $arr = array('id', 'name'); function insertIntoArray($name, $pos, $arr) { $length = count($arr); $temp = array(); $a = 0; for($i = 0; $i <= $length; $i++) { if($i == ($pos - 1)) { $temp[$i] = $name; $a++; } $temp[$a] = $arr[$i]; $a++; } return($temp); } $bla = insertIntoArray('test', '2', $arr); ?> [/PHP] CU!
29. Januar 200916 j ... aber da ich gerade selber nach einer Lösung für das Problem gesucht habe, dachte ich vielleicht hilft es anderen Suchenden wenn ich hier meine Lösung veröffentliche. Ich benutze die Funktion "array_splice()" Als Parameter einfach: array_splice(ürsprüngliche Array,gewünschte Position,0,gewünschter Wert); fertig! MfG Mephisto
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.