php gettype修复

时间:2011-06-16 04:45:38

标签: php variables sqlite gettype

我创建的以下函数是将数据存储在具有正确类型的数据库中。

我有几个问题:

  1. 将空字符串转换为NULL对我来说很有意义。我不考虑后果吗?
  2. sqlite3文本的max_length值是多少?我知道blob和文本长度约束是相同的,但还有其他考虑因素,如在shell中显示数据等。
  3. 有没有一种简单的方法来检查数据是否是图像,以及什么类型,因为在这个阶段没有mime?
  4. 我遗失了什么东西?

    public static function getType($value, $max_length = 50){
    
        $type = gettype($value);
    
        if($type == 'NULL'
                || $type == 'boolean'
                || $type == 'integer'
                || $type == 'double'
                || $type == 'object'
                || $type == 'resource'
                || $type == 'array'
            )
            return array('type'=>$type,'value'=>$value);
    
        if($type == 'string' && empty($value))
            return array('type'=>'NULL','value'=>$value);
    
        if($type == 'string' && strlen($value) > $max_length)
            return array('type'=>'blob','value'=>$value);
    
        if($type == 'string' && substr($value, 0,1) === '0')
            return array('type'=>'string','value'=>$value);
    
        if($type == 'string' && is_numeric($value)){
            $int   = (int) $value;
            $float = (float) $value;
    
            if($int == $value){
                $value = $int;
                $type = 'integer';
            }elseif($float == $value){
                $value = $float;
                $type = 'double';
            }
        }elseif($type == 'string'){
            return array('type'=>$type,'value'=>$value);
        }else{
            $type = 'blob';
        }
        return array('type'=>$type,'value'=>$value);
    }
    

0 个答案:

没有答案