参数类型转换函数
convert_to_boolean_ex()
强制转换为布尔类型。
若原来是布尔值则保留,不做
改动。长整型值0、双精度型值0.0、空字符串或字符串‘0’还有空值 NULL 都将被转换为 FALSE(本质上是一个整数
0)。数组和对象若为空则转换为 FALSE,否则转为 TRUE。除此之外的所有值均转换为 TRUE(本质上是一个整数 1)。
convert_to_long_ex()
强制转换为长整型,这也是默认的整数类型。
如果原来是空值NULL、布尔型、资源当然还有长整型,则其值保持不变(因为本质上都是整数 0)。双精度型则被简单取整。包含有一个整数的字符串将会被转换为对应的整数,否则转换为 0。空的数组和对象将被转换为 0,否则将被转换为 1。
convert_to_double_ex()
强制转换为一个双精度型,这是默认的浮点数类型。
如果原来是空值 NULL 、布尔值、资源和双精度型则其值保持不变(只变一下变量类型)。包含有一个数字的字符串将被转换成相应的数字,否则被转换为 0.0。空的数组和对象将被转换为 0.0,否则将被转换为 1.0。
convert_to_string_ex()
强制转换为字符串。空值 NULL 将被转换为空字符串。
布尔值 TRUE 将被转换为 ‘1’,FALSE 则被转为一个空字符串。长整型和双精度型会被分别转换为对应的字符串,数组将会被转换为字符串‘Array’,而对象则被转换为字符串‘Object’。
convert_to_array_ex(value)
强制转换为数组。若原来就是一数组则不作改动。
对象将被转换为一个以其属性为键名,以其属性值为键值的数组。(方法将会被转化为一个‘scalar’键,键值为方法名?待验证)空值 NULL 将被转换为一个空数组。除此之外的所有值都将被转换为仅有一个元素(下标为0)的数组,并且该元素即为该值。
convert_to_object_ex(value)
强制转换为对象。若原来就是对象则不作改动。
空值NULL 将被转换为一个空对象。数组将被转换为一个以其键名为属性,键值为其属性值的对象。其他类型则被转换为一个具有‘scalar’属性的对象,‘scalar’属性的值即为该值本身。
convert_to_null_ex(value)
强制转换为空值 NULL。
在你的参数上使用这些函数可以确保传递给你的数据都是类型安全的。
如果提供的类型不是需要的类型,PHP 就会强制性地返回一个相应的伪值(比如空字符串、空的数组或对象、数值0或布尔值的 FALSE 等)来确保结果是一个已定义的状态。
下面的代码是从前面讨论过的模块中摘录的,其中用到了这些转换函数:
zval **parameter;
if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, ¶meter) != SUCCESS))
{
WRONG_PARAM_COUNT;
}
convert_to_long_ex(parameter);
RETURN_LONG(Z_LVAL_P(parameter));
这些方法非常实用,其实就是php类型转换的原生函数!
阅读(1408) | 评论(0) | 转发(0) |