在php中将某些内容存储为unsigned tinyint

时间:2011-08-01 22:26:55

标签: php types int tinyint

有没有办法在php中将我的数字显式存储为tinyint(1个字节而不是4个)。

或者我可以通过在int中将它们4乘4存储来强制执行此操作吗? (使用一些二进制操作)

我通过使用str_split断开字符串并通过unpack('C',..)将这些字节解释为int来生成这些值。 目前我将这些值存储在一个数组中作为个体整数,但如果我能以某种方式将它们存储为tinyints,它可以节省大量空间。

1 个答案:

答案 0 :(得分:1)

PHP有两种数据类型可供您在此处使用:integerstring PHP没有你可以选择的任何其他类型(float不是整数的好选择,其他类型不合适。)

一个int通常是32位或64位,一个字符串是每个字符1个字节。*我建议除非你有很多的数字,否则32位不会有任何问题整数。如果你绝对肯定想要安全 space 内存**并且你的号码最多有3位数字,你可以将你的数字作为字符串来处理。甚至还有BCMath扩展名,可让您直接操作字符串数字,而无需来回转换它们。尽管如此,这可能是非常有限的收益,这是非常麻烦的。

看到MySQL TINYINT 通常用于布尔值,请注意PHP 有布尔类型......!


*每个单字节字符一个字节,即。
**由于PHP脚本通常只是非常临时的,因此您应该只遇到峰值内存使用问题,而不是存储空间。获得更多RAM可能比使用类型更有效。