0

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

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

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

4

1 回答 1

1

PHP 有两种您可能想在这里使用的数据类型:integerstring.
PHP 没有任何其他类型可供您选择(float对于整数来说不是一个好的选择,其他类型不合适)。

一个 int 通常是 32 位或 64 位,一个字符串是每个字符 1 个字节。* 我建议除非你有很多数字,否则你不会看到 32 位 int 有任何问题。如果您绝对想要保护空间内存**并且您的号码最多为 3 位,您可以将您的号码作为字符串处理。甚至还有BCMath扩展,它可以让您直接对字符串数字进行操作,而无需来回转换它们。但是,对于可能非常有限的收益来说,这是相当多的麻烦。

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


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

于 2011-08-01T23:06:50.800 回答