Inspekt\Cage::getValueRecursive PHP Method

getValueRecursive() protected method

protected getValueRecursive ( $keys, $data_array, integer $level ) : boolean
$keys
$data_array
$level integer
return boolean
    protected function getValueRecursive($keys, $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) {
                return $data_array[$thiskey];
            } elseif ($data_array[$thiskey] instanceof \ArrayObject) {
                if ($level < self::ISPK_RECURSION_MAX) {
                    unset($keys[key($keys)]);
                    return $this->getValueRecursive($keys, $data_array[$thiskey], $level + 1);
                } else {
                    throw new Exception('Inspekt recursion limit met');
                    return false;
                }
            }
        } else {
            throw new KeyDoesNotExistException("Key '{$thiskey}' does not exist");
        }
        return false;
    }