protected function getPossibleScalarTypes($value): array
    {
        return array_filter($this->types, function(string $type) use ($value) {
            if (substr($type, -2) === '[]') {
                return false;
            }

            switch (strtolower($type)) {
                case 'string':
                    return !is_bool($value);
                case 'integer':
                    return !is_string($value) || is_numeric($value);
                case 'float':
                    return !is_bool($value) && (!is_string($value) || is_numeric($value));
                case 'boolean':
                    return !is_string($value) || in_array($value, BooleanHandler::getBooleanStrings());
                case 'datetime':
                    return !is_bool($value) && !is_float($value) && (!is_string($value) || strtotime($value) !== false);
                case 'array':
                case 'object':
                case 'resource':
                case 'stdclass':
                    return false;
                default:
                    return true;
            }
        });
    }
protected function getPossibleScalarTypes($value): array
    {
        return array_filter($this->types, function(string $type) use ($value) {
            if (substr($type, -2) === '[]') {
                return false;
            }

            switch (strtolower($type)) {
                case 'string':
                    return !is_bool($value);
                case 'integer':
                    return !is_string($value) || is_numeric($value);
                case 'float':
                    return !is_bool($value) && (!is_string($value) || is_numeric($value));
                case 'boolean':
                    return !is_string($value) || in_array($value, BooleanHandler::getBooleanStrings());
                case 'datetime':
                    return !is_bool($value) && !is_float($value) && (!is_string($value) || strtotime($value) !== false);
                case 'array':
                case 'object':
                case 'resource':
                case 'stdclass':
                    return false;
                default:
                    return true;
            }
        });
    }
protected function getPossibleScalarTypes ( $ value ) : array { return array_filter ( $ this -> types , function ( string $ type ) use ( $ value ) { if ( substr ( $ type , - 2 ) === '[]' ) { return false ; } switch ( strtolower ( $ type ) ) { case 'string' : return ! is_bool ( $ value ) ; case 'integer' : return ! is_string ( $ value ) || is_numeric ( $ value ) ; case 'float' : return ! is_bool ( $ value ) && ( ! is_string ( $ value ) || is_numeric ( $ value ) ) ; case 'boolean' : return ! is_string ( $ value ) || in_array ( $ value , BooleanHandler :: getBooleanStrings ( ) ) ; case 'datetime' : return ! is_bool ( $ value ) && ! is_float ( $ value ) && ( ! is_string ( $ value ) || strtotime ( $ value ) !== false ) ; case 'array' : case 'object' : case 'resource' : case 'stdclass' : return false ; default : return true ; } } ) ; }
Get possible types based on a scalar value

@param mixed $value
@return array
Get possible types based on a scalar value