3v4l.org

run code in 300+ PHP versions simultaneously
<?php $structure = [ "a", "b" => [ "b1", "b2" => [ "b21", "b22" ] ] ]; $data = ['A', 'B1', 'B21', 'B22']; function alterKey(&$arr, $data) { foreach ($arr as $key => $val) { if (!is_array($val)) { $data_key = array_search(strtoupper($val), $data); $arr[$val] = $data[$data_key]; unset($arr[$key]); } else { $arr[$key] = alterKey($val, $data); } } ksort($arr); return $arr; } alterKey($structure, $data); echo '<pre>', print_r($structure);
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 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.18, 8.3.0 - 8.3.6
<pre>Array ( [a] => A [b] => Array ( [b1] => B1 [b2] => Array ( [b21] => B21 [b22] => B22 ) ) ) 1

preferences:
183.47 ms | 403 KiB | 210 Q