Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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]

Geschrieben

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

Geschrieben

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!

  • 2 Jahre später...
Geschrieben

... 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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...