在过去的几天里,我一直在处理许多与套接字相关的任务,并且必须使用pack()
和unpack()
函数。
对于那些从未使用过这些函数的人:pack函数将许多变量打包成二进制字符串。例如,你可以用这种方式在一个字节上存储8个布尔变量。
现在,在解压缩数据时,我发现了一种相当奇特的行为。我们来看看:
php > var_dump(unpack('n2', pack('n2', 1234, 1234)));
array(2) {
[1]=>
int(1234)
[2]=>
int(1234)
}
正如您所看到的,unpack的结果数组是从1 索引,而不是通常的0.(大多数PHP函数返回从0索引的数组。)
我的问题是,PHP是否有特定原因,或者它是一个错误?