Inspekt\Cage::setValueRecursive PHP Method

setValueRecursive() protected method

See also: Cage::setValue
protected setValueRecursive ( $keys, $val, $data_array, integer $level ) : boolean
$keys
$val
$data_array
$level integer
return boolean
    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;
    }