kills Geschrieben 29. November 2006 Geschrieben 29. November 2006 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 Zitieren
geloescht_JesterDay Geschrieben 29. November 2006 Geschrieben 29. November 2006 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] Zitieren
etreu Geschrieben 29. November 2006 Geschrieben 29. November 2006 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. Zitieren
kills Geschrieben 29. November 2006 Autor Geschrieben 29. November 2006 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 Zitieren
DirkHo Geschrieben 29. November 2006 Geschrieben 29. November 2006 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! Zitieren
Mephistoathell Geschrieben 29. Januar 2009 Geschrieben 29. Januar 2009 ... 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.