1

ここ数日、私は多くのソケット関連のタスクに取り組んでおり、pack()andunpack()関数を使用する必要がありました。

これらの関数を使用したことがない方のために:pack関数はいくつかの変数をバイナリ文字列にパックします。たとえば、この方法で8つのブール変数を1バイトに格納できます。

さて、データを解凍しているときに、かなり奇妙な動作に気づきました。どれどれ:

php > var_dump(unpack('n2', pack('n2', 1234, 1234)));
array(2) {
  [1]=>
  int(1234)
  [2]=>
  int(1234)
}

ご覧のとおり、unpackの結果の配列は、通常の0ではなく1からインデックスが付けられます(ほとんどのPHP関数は、0からインデックスが付けられた配列を返します)。

私の質問は、PHPがこれを行う特定の理由があるのか​​、それともバグなのかということです。

4

0 に答える 0