Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 变量转换上的公共整数表示?_Php_Gettype - Fatal编程技术网

Php 变量转换上的公共整数表示?

Php 变量转换上的公共整数表示?,php,gettype,Php,Gettype,有一段时间我一直在使用:gettype()动态获取变量转换类型,例如: function Type ($Value = null){ return gettype($Value); } echo Type(array()); // Echo array echo Type (1); // Echo integer echo Type(1.2); // echo doubble 然而,我正在寻找一种方法,它有一个公共的和已知的整数表示形式,我相信它比传统的字符串更容易验证 有人有可能解决这

有一段时间我一直在使用:
gettype()
动态获取变量转换类型,例如:

function Type ($Value = null){
 return gettype($Value);
}


echo Type(array()); // Echo array
echo Type (1); // Echo integer
echo Type(1.2); // echo doubble
然而,我正在寻找一种方法,它有一个公共的和已知的整数表示形式,我相信它比传统的字符串更容易验证

有人有可能解决这个问题吗

我有这样的想法:

function Type ($Value = null){
 $Type = gettype($Value);
 if ($Type === "array"){
   return 1;
 }elseif ($Type === "integer"){
   return 2;
 }
 // ...

}
这个方法完成了任务,但是看起来很凌乱,当涉及到我的代码时,我是一个干净的怪物。。。有什么看起来更优雅的吗

这个怎么样:

function typeAsNumber( $var = null ) {

   $validTypes = array( "boolean", 
                        "integer", 
                        "double", 
                        "string", 
                        "array",  
                        "object", 
                        "resource", 
                        "NULL", 
                        "unknown type" 
                      );

   return array_search( gettype( $var ), $validTypes);

}
这个怎么样:

function typeAsNumber( $var = null ) {

   $validTypes = array( "boolean", 
                        "integer", 
                        "double", 
                        "string", 
                        "array",  
                        "object", 
                        "resource", 
                        "NULL", 
                        "unknown type" 
                      );

   return array_search( gettype( $var ), $validTypes);

}

我不知道你为什么要这么做,就像你说的。。您一直在使用此函数,因此显然已经围绕返回的结果创建了代码。。因此,在滚动更新时,修改如此重要的函数可能会/可能会导致复杂性,因为这将包括大规模代码结构更改,而创建简单API的方法是保持连续性。。因此,如果此代码可供公众使用,则剧烈的更改将使人们(如果使用)难以升级到另一个版本

如果你也有。。以下是我刚刚写的一些东西:

function Cast_Type ($Value = null){
    $Type = gettype($Value);
    switch ($Type){
        case "boolean":
            return 1;
            break;
        case "integer":
            return 2;
            break;
        case "double":
            return 3;
            break;
        case "string":
            return 4;
            break;
        case "array":
            return 5;
            break;
        case "object":
            return 6;
            break;
        case "resource":
            return 7;
            break;
        case "NULL":
            return 8;
            break;
        case "unknown type":
            return false;
            break;
    }
}

使用
开关
案例
方法,用户可以轻松阅读您的代码,并且可以更轻松地验证返回,如。。一个简单的外观会使
资源
类型返回
7

我不知道您为什么要这样做,正如您所说的那样。。您一直在使用此函数,因此显然已经围绕返回的结果创建了代码。。因此,在滚动更新时,修改如此重要的函数可能会/可能会导致复杂性,因为这将包括大规模代码结构更改,而创建简单API的方法是保持连续性。。因此,如果此代码可供公众使用,则剧烈的更改将使人们(如果使用)难以升级到另一个版本

如果你也有。。以下是我刚刚写的一些东西:

function Cast_Type ($Value = null){
    $Type = gettype($Value);
    switch ($Type){
        case "boolean":
            return 1;
            break;
        case "integer":
            return 2;
            break;
        case "double":
            return 3;
            break;
        case "string":
            return 4;
            break;
        case "array":
            return 5;
            break;
        case "object":
            return 6;
            break;
        case "resource":
            return 7;
            break;
        case "NULL":
            return 8;
            break;
        case "unknown type":
            return false;
            break;
    }
}

使用
开关
案例
方法,用户可以轻松阅读您的代码,并且可以更轻松地验证返回,如。。一个简单的外观可以明显看出,
资源
类型将返回
7

当函数返回一组枚举值中的一个时,通常将它们定义为常量。这允许人们在代码中的其他地方引用它们,而不知道值是什么

例如:

define('TYPE_BOOLEAN', 0);
define('TYPE_INTEGER', 1);
define('TYPE_FLOAT', 2);
define('TYPE_STRING', 3);
define('TYPE_ARRAY', 4);
define('TYPE_OBJECT', 5);
define('TYPE_RESOURCE', 6);
define('TYPE_NULL', 7);
define('TYPE_UNKNOWN', 8);

function type($var) {
    switch (gettype($var)) {
        case 'boolean':
            return TYPE_BOOLEAN;
        case 'integer':
            return TYPE_INTEGER;
        case 'double':
            return TYPE_FLOAT;
        case 'string':
            return TYPE_STRING;
        case 'array':
            return TYPE_ARRAY;
        case 'object':
            return TYPE_OBJECT;
        case 'resource':
            return TYPE_RESOURCE;
        case 'NULL':
            return TYPE_NULL;
    }
    return TYPE_UNKNOWN;
}
现在,当您使用该函数时,您可以编写有意义的代码。它不是只返回一个不起眼的整数,而是返回一个可以与常量进行比较的整数

if (type($val) === TYPE_OBJECT) {
    $val = (array) $val;
}
尽管如此,这样做还是有点不必要。
gettype()
函数总是为同一类型返回相同的值,因此将返回值与类似于
'object'
的内容进行比较也可以

if (gettype($val) === 'object') {
    $val = (array) $val;
}

当函数返回一组枚举值中的一个时,通常将它们定义为常量。这允许人们在代码中的其他地方引用它们,而不知道值是什么

例如:

define('TYPE_BOOLEAN', 0);
define('TYPE_INTEGER', 1);
define('TYPE_FLOAT', 2);
define('TYPE_STRING', 3);
define('TYPE_ARRAY', 4);
define('TYPE_OBJECT', 5);
define('TYPE_RESOURCE', 6);
define('TYPE_NULL', 7);
define('TYPE_UNKNOWN', 8);

function type($var) {
    switch (gettype($var)) {
        case 'boolean':
            return TYPE_BOOLEAN;
        case 'integer':
            return TYPE_INTEGER;
        case 'double':
            return TYPE_FLOAT;
        case 'string':
            return TYPE_STRING;
        case 'array':
            return TYPE_ARRAY;
        case 'object':
            return TYPE_OBJECT;
        case 'resource':
            return TYPE_RESOURCE;
        case 'NULL':
            return TYPE_NULL;
    }
    return TYPE_UNKNOWN;
}
现在,当您使用该函数时,您可以编写有意义的代码。它不是只返回一个不起眼的整数,而是返回一个可以与常量进行比较的整数

if (type($val) === TYPE_OBJECT) {
    $val = (array) $val;
}
尽管如此,这样做还是有点不必要。
gettype()
函数总是为同一类型返回相同的值,因此将返回值与类似于
'object'
的内容进行比较也可以

if (gettype($val) === 'object') {
    $val = (array) $val;
}

返回后不需要
中断
。在
返回后不需要
中断