在php中将某些内容存储为未签名的tinyint

在php中将某些内容存储为未签名的tinyint,php,types,int,tinyint,Php,Types,Int,Tinyint,有没有办法在php中将我的数字显式存储为tinyint(1字节而不是4字节) 或者我只能通过将它们以4乘4的方式存储在int中来实现这一点?(使用一些二进制操作) 我通过使用str_split断开一个字符串并通过unpack('C',..)将这些字节解释为int来生成这些值。 目前,我将这些值存储在一个数组中作为invdividual integer,但如果我可以将它们存储为tinyint,则可以节省大量空间。PHP有两种数据类型,您可能希望在这里使用:integer和string PHP没有任

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

或者我只能通过将它们以4乘4的方式存储在int中来实现这一点?(使用一些二进制操作)

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

PHP有两种数据类型,您可能希望在这里使用:
integer
string

PHP没有任何其他类型可供选择(
float
不是整数的好选择,其他类型不合适)

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

尽管MySQL TINYINT通常用于布尔值,但请注意PHP确实有一个布尔类型


*每一字节字符一个字节,即。

**由于PHP脚本通常只是非常临时的,所以您应该只遇到峰值内存使用问题,而不是存储空间问题。获得更多的RAM可能是比使用类型更有效的解决方案。

TINYINT是一种SQL数据类型——php没有类型。但是,您可以使用(int)$x或intval($x)强制类型。我有点困惑。标题是“(…)in php”,但您谈到了存储数据。您想在php中使用tinyint,还是想从php将tinyint保存到数据库中?我想使用php。比如说,如果我能在php中强制使用类型,我会制作一个数组并在其中填充tinyint。我想我可以再次将int转换为1符号字符串。但这会使它们更难访问,而且我不知道1个符号字符串是否实际上在内部存储为1位数据。@汉普斯特你说php没有类型,但我可以将类型强制到变量上?所以它在内部使用类型,对吗?我只希望我的整数在内部存储为1字节,而不是当前的4字节(整数)。我确实有很多整数,所以我只想看看我所有的选项,我猜我最好的选择可能是重新考虑我当前的整数。因为255仍然需要3个字符(3个字节),所以BCMath的增益似乎太小了。但是,如果我将它们打包存储为一个1字符的字符串,并在再次需要它们时解包,那么每个数字可以节省3个字节吗?想想看,我的数组在存储整数(或字符串)时使用的键可能也需要4个字节。。我猜你是对的,我只是在错误的地方寻找我的问题。@Antiz是的,的确,
pack
ing和
unpack
ing显式地放入一个字节字符串是另一种保护内存的方法,但更麻烦。如果您需要对数字类型进行如此多的控制,那么无论您想做什么,PHP都可能是错误的语言。