<?php

$arr = array(
'chave1' => 'valor1',
'chave2' => array(
    'chave3' => 'valor2',
    'chave4' => array(
        'chave5' => 'valor3'
    )
));

function setar_valor($path, $str, &$array){
	$niveis = explode('.', $path);
    $temp = &$array;
    foreach ( $niveis as $key ) {
        $temp = &$temp[$key];
    }
    $temp = $str;
}

setar_valor('chave2.chave4.chave5', 'meu novo valor', $arr);
var_dump($arr);