Array - Neuen Key einfügen

Sasser

Erfahrenes Mitglied
Guten Abend!

Ich habe ein Array, welches so aussieht:

Code:
[Element_1]
   [Element_2]
      [Element_3]
         [ID]
         [NAME]

Wie kann man nun nach Element_2 einen neuen Key einfügen, welchem die nächsten Keys untergeordnet sind?

Beispiel:

Code:
[Element_1]
   [Element_2]
      [Element_3]
         [0] // Soll hinzugefügt werden
            [ID]
            [NAME]
 
Zuletzt bearbeitet:
Also, wenn dir der Name des Elements bekannt ist, dann ist eigentlich kein Problem...

PHP:
$i = 1;
foreach($array as $key => $value)
{
    if($key != 'Element_3')
    {
        $newArray[$key] = $value;
        $i++;
        continue;
    }
    $newArray[0] = array_slice($array, $i, false, true);
    break;
}

Irgendwie so sollte das funktionieren... Kann momentan leider nicht testen.
Eventuell musst du den dritten Parameter von [phpf]array_slice[/phpf] in NULL ändern.
 
PHP:
$array = array(
    'Element_1' => 0,
    'Element_2' => 1,
    'Element_3' => 2,
    'ID' => 10,
    'NAME' => 'myName'
);


array_splice($array, 2, 0, 'Neu');
var_dump($array);

Ausgabe:
Code:
array(6) {
  ["Element_1"]=>
  int(0)
  ["Element_2"]=>
  int(1)
  [0]=>
  string(3) "Neu"
  ["Element_3"]=>
  int(2)
  ["ID"]=>
  int(10)
  ["NAME"]=>
  string(6) "myName"
}

Nachtrag: Um nach dem Schlüssel die Position festzulegen geht das ganz einfach so
PHP:
$positionForNewEntry = array_search('Element_2', array_keys($array))+1;
array_splice($array, $positionForNewEntry, 0, 'Neu');
 
Zuletzt bearbeitet:
OK ich habe mich warscheinlich falsch ausgedrück, denn dem neuen Key sollen [ID] und [NAME] untergeordnet sein. Also anstatt auf den Inhalt so zuzugreifen:

PHP:
$array ["Element_1"] ["Element_2"] ["Element_3"] ["ID"]
$array ["Element_1"] ["Element_2"] ["Element_3"] ["NAME"]

soll man so darauf zugreifen:

PHP:
$array ["Element_1"] ["Element_2"] ["Element_3"] ["0"] ["ID"]
$array ["Element_1"] ["Element_2"] ["Element_3"] ["0"] ["NAME"]

Ausgabe:

Code:
[Element_1]
   [Element_2]
      [Element_3]
         [0] // Soll hinzugefügt werden
            [ID]
            [NAME]

Sorry, dass ich mich falsch ausgedrückt habe.
 
Zuletzt bearbeitet:
Ist auch nicht besonders schwer
PHP:
//Test-Array
$myArray = array(
    'Element_1' => array(
        'Element_2' => array(
            'Element_3' => array(
                'ID' => 1,
                'NAME' => 'myName'))));

//Alles nach Element_3 auslesen
$tempArray = $myArray['Element_1']['Element_2']['Element_3'];
//Element_3 leeren
unset($myArray['Element_1']['Element_2']['Element_3']);
//Alles bei [Element3][0] ensetzen
$myArray['Element_1']['Element_2']['Element_3'][0] = $tempArray;
var_dump($myArray);
 
Zuletzt bearbeitet:
Zurück