<?php function array_map_keys(callable $callback, array $array) { return array_merge([], ...array_map( function ($key, $value) use ($callback) { return [$callback($key) => $value]; }, array_keys($array), $array )); } $array = ['a' => 1, 'b' => 'test', 'c' => ['x' => 1, 'y' => 2]]; $newArray = array_map_keys(function($key) { return 'new' . ucfirst($key); }, $array); echo json_encode($array); // {"a":1,"b":"test","c":{"x":1,"y":2}} echo json_encode($newArray); // {"newA":1,"newB":"test","newC":{"x":1,"y":2}}