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;
}
在
返回后不需要中断
。在返回后不需要中断
。