为什么PHP中的unpack()函数返回以数组索引1开头的二进制数据数组。
$str = "PHP";
$binary_data = unpack("C*",$str);
print_r($binary_data);
上面的PHP脚本打印如下:
数组([1] => 80 [2] => 72 [3] => 80)
答案 0 :(得分:6)
数组是带有命名键的关联数组,而不是带数字键的常规数组。我们的想法是,您将为每个格式代码命名,结果数组将使用这些名称作为数组键。
例如:
<?php
$str = "PHP";
$binary_data = unpack("C*letter",$str);
print_r($binary_data);
结果:
Array
(
[letter1] => 80
[letter2] => 72
[letter3] => 80
)
来自PHP manual:
解压缩的数据存储在关联数组中。要完成此操作,您必须命名不同的格式代码,并用斜杠
/
分隔它们。如果存在转发器参数,则每个数组键将具有给定名称后面的序列号。示例#1 unpack()示例
<?php $binarydata = "\x04\x00\xa0\x00"; $array = unpack("cchars/nint", $binarydata); ?>
结果数组将包含值为4的条目“chars”和160的“int”。
示例#2带有转发器的unpack()示例
<?php $binarydata = "\x04\x00\xa0\x00"; $array = unpack("c2chars/nint", $binarydata); ?>
结果数组将包含条目“chars1”,“chars2”和“int”。