ここ数日、私は多くのソケット関連のタスクに取り組んでおり、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がこれを行う特定の理由があるのか、それともバグなのかということです。