<?php function fill($keys, $value, $a = array()) { $keys = (array)$keys; $key = array_pop($keys); $v = &$a; foreach ($keys as $keyName) { $v = &$v[$keyName]; } $v[$key] = $value; return $a; } var_dump(fill(['a', 'b', 'c', 'd', 'e'], 'f', array('a' => array('b' => array('b1' => array()))))); var_dump(fill(['a', 'b', 'c'], 'd', array('a' => array('a1' => 3)))); var_dump(fill(['c'], 'd')); var_dump(fill('kkk', 'd'));