protected function setValueRecursive($keys, $val, $data_array, $level = 0)
{
$thiskey = current($keys);
if (is_numeric($thiskey)) {
// force numeric strings to be integers
$thiskey = (int) $thiskey;
}
if (array_key_exists($thiskey, $data_array)) {
if (sizeof($keys) == 1) {
$data_array[$thiskey] = $val;
return $data_array[$thiskey];
} elseif ($data_array[$thiskey] instanceof \ArrayObject) {
if ($level < self::ISPK_RECURSION_MAX) {
unset($keys[key($keys)]);
return $this->setValueRecursive($keys, $val, $data_array[$thiskey], $level + 1);
} else {
throw new Exception('Inspekt recursion limit met');
return false;
}
}
}
return false;
}