static function get($arr,$keys,$default=null)
    {
        if (! is_array($arr)) {
            return $default;
        }
        if (is_array($keys) and count($keys) > 0) {
            foreach ($keys as $key) {
                $arr = self::get($arr, $key, $default);
            }
            return $arr;
        }
        if (is_string($keys) || is_int($keys)) {
            return isset($arr[$keys]) ? $arr[$keys] : $default;
        } 
        return $default;
    }
static function get($arr,$keys,$default=null)
    {
        if (! is_array($arr)) {
            return $default;
        }
        if (is_array($keys) and count($keys) > 0) {
            foreach ($keys as $key) {
                $arr = self::get($arr, $key, $default);
            }
            return $arr;
        }
        if (is_string($keys) || is_int($keys)) {
            return isset($arr[$keys]) ? $arr[$keys] : $default;
        } 
        return $default;
    }
static function get ( $ arr , $ keys , $ default = null ) { if ( ! is_array ( $ arr ) ) { return $ default ; } if ( is_array ( $ keys ) and count ( $ keys ) > 0 ) { foreach ( $ keys as $ key ) { $ arr = self :: get ( $ arr , $ key , $ default ) ; } return $ arr ; } if ( is_string ( $ keys ) || is_int ( $ keys ) ) { return isset ( $ arr [ $ keys ] ) ? $ arr [ $ keys ] : $ default ; } return $ default ; }
Get value from array with keys, return default if not found

The function support the list of keys in order as well

@param array $arr     The array that you want to test
@param mixed $keys    Could be name of key or an array containing list of key path
@param mixed $default Default value if no value for key is found

@return mixed Value at key path
Get value from array with keys return default if not found