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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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