phparraysmultidimensional-arraymapping

Copy first level keys of a 2d array as a new column of each row


Assuming a 2d array as input, how can each first level key be copied as a new element in its second level row?

Sample input:

$members = [
    'myname' => ['userid' => 52, 'age' => 46],
    'isname' => ['userid' => 22, 'age' => 47],
    'yourname' => ['userid' => 47, 'age' => 85]
];

Desired result:

[
    'myname' => ['userid' => 52, 'age' => 46, 0 => 'myname'],
    'isname' => ['userid' => 22, 'age' => 47, 0 => 'isname'],
    'yourname' => ['userid' => 47, 'age' => 85, 0 => 'yourname'],
]

After fixing some typos, the following script works, but how else can this be achieved?

foreach ($members as $key => $item) {
  array_push($members[$key], $key);
}

This question was stimulated by array_push not working in foreach loop which suffered from multiple typos and was closed accordingly.


Solution