<?php
$seuArray = array( 
  'a' => 0,
  'b' =>   array( 'b1' => 5 , 
                  'b2' => array( 'b2_0' => 4 ) ,
                  'b3' => array( 'b3_0' => 5 )
            ),
  'c' => 2,
  'd' => 5
  );

$saida = replaceValue($seuArray, 'b2_0', 'novo_valor');


function replaceValue($array, $key, $newValue)
{

    $params = array(
      'newvalue' => $newValue,
      'key'      => $key    
    );

    array_walk_recursive($array, function(&$v, $k) use ($params) {

        if ($k == $params['key']) {
            $v = $params['newvalue'];
        }       
    }); 
    return $array;
}

print_r($saida);