PHPのarray_mergeの多次元バージョン

PHPのarray_mergeの多次元バージョン、
というか、array_merge_recursiveの上書きバージョンがなかったので、
関数を作ってみました。
色々ボロとかあると思いますが、とりあえず公開をば。
array_mergeを駆使すれば多次元化できるかなぁとかちょっと考えたのですが、
うんうん唸って諦めました。(ぁ
作った関数、array_merge_recursive_overwriteは、再帰を使って多次元化してます。

function array_merge_recursive_overwrite($a, $b){
if(!$a) return $b;
elseif(!$b) return $a;

foreach($a as $ak => $av){
foreach($b as $bk => $bv){
if($ak == $bk){
if(!empty($av) && is_array($av)){
$a[$ak] = array_merge_recursive_overwrite($a[$ak], $b[$bk]);
}
else{
$a[$ak] = $b[$bk];
}
}
else{
$a += $b;
}
}
}
return $a;
}