3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Given an array and a set of `old => new` keys, * will recursively replace all array keys that * are old with their corresponding new value. * * @param mixed $array * @param array $old_to_new_keys * * @return array */ function array_replace_keys($array, array $old_to_new_keys) { if(!is_array($array)){ return $array; } $temp_array = []; $ak = array_keys($old_to_new_keys); $av = array_values($old_to_new_keys); foreach($array as $key => $value){ if(array_search($key, $ak, true) !== false){ $key = $av[array_search($key, $ak)]; } if(is_array($value)){ $value = array_replace_keys($value, $old_to_new_keys); } $temp_array[$key] = $value; } return $temp_array; } $old = array( 'a' => 'blah', 'b' => 'key', 'c' => 'amazing', 'd' => array( 0 => 'want to replace', 1 => 'yes I want to' ) ); $replace = ["a" => "AA", 1 => 11]; var_export(array_replace_keys($old, $replace));
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
array ( 'AA' => 'blah', 'b' => 'key', 'c' => 'amazing', 'd' => array ( 0 => 'want to replace', 11 => 'yes I want to', ), )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 array ( 'AA' => 'blah', 'b' => 'key', 'c' => 'amazing', 'd' => array ( 0 => 'want to replace', 11 => 'yes I want to', ), )

preferences:
107.47 ms | 402 KiB | 155 Q