Рекурсивно заменить ключи в массиве

Я не могу это решить …

Я надеялся, что для этого будет функция PHP по умолчанию, но, похоже, нет. Код, который я нашел в Интернете, кажется, действительно не работает для моей ситуации, так как часто людям нужно только изменять значения массива, а не их ключи.

Мне в основном нужна рекурсивная функция, которая заменяет каждый ключ, который начинается с «_» с тем же ключом без этого символа ….

Кто-нибудь здесь раньше использовал что-то подобное?

Попробуй это:

function replaceKeys(array $input) { $return = array(); foreach ($input as $key => $value) { if (strpos($key, '_') === 0) $key = substr($key, 1); if (is_array($value)) $value = replaceKeys($value); $return[$key] = $value; } return $return; } 

Итак, этот код:

 $arr = array('_name' => 'John', 'ages' => array( '_first' => 10, 'last' => 15)); print_r(replaceKeys($arr)); 

Будет производить (как показано на кододелате ):

 Array ( [name] => John [ages] => Array ( [first] => 10 [last] => 15 ) )