PHP中的数据类型
大家都知道,PHP中的整型是long型的,对于:
<?PHP
echo 2888888888;
在32位机器上已经超过了long型的表达范围,应该输出负数吧,但是没有,为什么呢?
好像:
PHP在解析的时候,不是遇见数字就是long型的,至少这里被解释成了DOUBLE型的了,PHP中的数据类型:
/* data types */
/* All data types <= IS_BOOL have their constructor/destructors skipped */
#define IS_NULL 0
#define IS_LONG 1
#define IS_DOUBLE 2
#define IS_BOOL 3
#define IS_ARRAY 4
#define IS_OBJECT 5
#define IS_STRING 6
#define IS_RESOURCE 7
#define IS_CONSTANT 8
#define IS_CONSTANT_ARRAY 9
/* Ugly hack to support constants as static array indices */
#define IS_CONSTANT_INDEX 0x80
在echo的时候总是把数据通过: zend_make_printable_zval(.. 函数转换成char * ,len ,然后输出的。
zend.h中定义了数据的保存方式:
typedef union _zvalue_value {
long lval; /* long value */
double dval; /* double value */
struct {
char *val;
int len;
} str;
HashTable *ht; /* hash table value */
zend_object_value obj;
} zvalue_value;
struct _zval_struct {
/* Variable information */
zvalue_value value; /* value */
zend_uint refcount;
zend_uchar type; /* active type */
zend_uchar is_ref;
};
具体还有更多东西需要研究,现在没时间了。。。
建议继续学习:
- MySQL数据库中的5种数据类型简介 (阅读:4034)
- MySQL数据库数据类型之枚举类型ENUM测试总结 (阅读:3700)
- MySQL数据库数据类型之ENUM、SET、BOOL/BOOLEAN、TINYINT (阅读:2486)
- Java数据类型和MySql数据类型对应表 (阅读:2164)
- 再谈JavaScript的数据类型问题 (阅读:2067)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:phpor 来源: PHPor 的blog
- 标签: 数据类型
- 发布时间:2011-02-28 23:20:56
- [697] Go Reflect 性能
- [24] 正态分布的前世今生(一)
- [16] rsync同步的艺术
- [15] Cuckoo Filter:设计与实现
- [13] 什么是DNS劫持和DNS污染?
- [13] 关于RDS只读实例延迟分析
- [13] Linux Used内存到底哪里去了?
- [12] Linux内存中的Cache真的能被回收么?
- [12] 公钥私钥加密解密数字证书数字签名详解
- [11] Android应用内多进程的使用及注意事项