有没有办法将我的数字显式存储在 php 中作为 tinyint(1 字节而不是 4)。
或者我只能通过将它们 4 x 4 存储在 int 中来强制执行此操作吗?(使用一些二进制操作)
我通过使用 str_split 分解字符串并通过 unpack('C', ..) 将这些字节解释为整数来生成这些值。目前我将这些值作为invdividual整数存储在一个数组中,但如果我能以某种方式将它们存储为tinyints,它可以节省大量空间。
PHP 有两种您可能想在这里使用的数据类型:integer
和string
.
PHP 没有任何其他类型可供您选择(float
对于整数来说不是一个好的选择,其他类型不合适)。
一个 int 通常是 32 位或 64 位,一个字符串是每个字符 1 个字节。* 我建议除非你有很多数字,否则你不会看到 32 位 int 有任何问题。如果您绝对想要保护空间内存**并且您的号码最多为 3 位,您可以将您的号码作为字符串处理。甚至还有BCMath扩展,它可以让您直接对字符串数字进行操作,而无需来回转换它们。但是,对于可能非常有限的收益来说,这是相当多的麻烦。
看到 MySQL TINYINT通常用于布尔值,请注意 PHP确实有布尔类型......!
* 每一个字节字符一个字节,即。
** 由于 PHP 脚本通常只是非常临时的,因此您应该只会遇到内存使用高峰的问题,而不是存储空间的问题。获得更多 RAM 可能是比玩类型更有效的解决方案。