main/app/API/Utils/ArrayUtils.php
public static function get(array $object, $keys)
    {
        $parts = explode('.', $keys);
        $key = array_shift($parts);

        if (isset($object[$key])) {
            if (!empty($parts) && is_array($object[$key])) {
                return static::get($object[$key], implode('.', $parts));
            }

            return $object[$key];
        }

        if (array_key_exists($key, $object)) {
            return null;
        }
        throw new \Exception("Key `{$keys}` doesn't exist for array keys [".implode(',', array_keys($object)).']');
    }
public static function get(array $object, $keys)
    {
        $parts = explode('.', $keys);
        $key = array_shift($parts);

        if (isset($object[$key])) {
            if (!empty($parts) && is_array($object[$key])) {
                return static::get($object[$key], implode('.', $parts));
            }

            return $object[$key];
        }

        if (array_key_exists($key, $object)) {
            return null;
        }
        throw new \Exception("Key `{$keys}` doesn't exist for array keys [".implode(',', array_keys($object)).']');
    }
public static function get ( array $ object , $ keys ) { $ parts = explode ( '.' , $ keys ) ; $ key = array_shift ( $ parts ) ; if ( isset ( $ object [ $ key ] ) ) { if ( ! empty ( $ parts ) && is_array ( $ object [ $ key ] ) ) { return static :: get ( $ object [ $ key ] , implode ( '.' , $ parts ) ) ; } return $ object [ $ key ] ; } if ( array_key_exists ( $ key , $ object ) ) { return null ; } throw new \ Exception ( "Key `{$keys}` doesn't exist for array keys [" . implode ( ',' , array_keys ( $ object ) ) . ']' ) ; }
This is more or less the equivalent of lodash get for array.

@param array  $object - the array
@param string $keys   - the property path

@return mixed

@throws \Exception
This is more or less the equivalent of lodash get for array .