PHP与解包不一致

PHP与解包不一致,php,Php,在过去的几天里,我一直在做很多与套接字相关的任务,不得不使用pack和unpack函数 对于那些从未使用过这些函数的人:pack函数将许多变量打包成一个二进制字符串。例如,您可以通过这种方式在一个字节上存储8个布尔变量 现在,当我打开数据包时,我注意到一个相当奇怪的行为。让我们看看: php > var_dump(unpack('n2', pack('n2', 1234, 1234))); array(2) { [1]=> int(1234) [2]=> int

在过去的几天里,我一直在做很多与套接字相关的任务,不得不使用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这样做的具体原因是什么,还是它是一个bug?

从4.3版开始,它总是从1开始,我不知道为什么你认为它是不稳定的?为什么它从0或1开始对你来说真的很重要?只要在所有表达式上使用array\u merge,你就很好了: