在 php unpack 函数中搜索正确的格式

Posted

技术标签:

【中文标题】在 php unpack 函数中搜索正确的格式【英文标题】:Searching the proper format in php unpack function 【发布时间】:2015-04-29 09:13:13 【问题描述】:

输出是代码的结果:

    $bytes= fread($handle,"32");
    print_r(unpack("La/fb/fc/fd/fe/ff/fg/fh",$bytes)); 


Array ( [a] => 20150416 [b] => 1.0499999523163 [c] => 1.25 [d] => 1.0299999713898 
[e] => 1.1900000572205 [f] => 509427008 [g] => 566125248 [h] => 509427008 ) 

如果想要的输出如下所示,如何在 unpack 中写入正确的格式?

Array ( [1] => 20150416 [2] => 1.0499999523163 [3] => 1.25 [4] => 1.0299999713898 
[5] => 1.1900000572205 [6] => 509427008 [7] => 566125248 [8] => 509427008 ) 

【问题讨论】:

我想你在找array_values()php.net/manual/en/function.array-values.php 或者,只需将更改解包字符串替换为L1/f2/f3/f4/f5/f6/f7/f8 你有没有尝试过实现目标? 字符串 L1/f2/f3/f4/f5/f6/f7/f8 格式错误,我测试过了。 【参考方案1】:

使用array_values,它保持顺序(第一个索引为0):

$bytes = fread($handle,"32");
$un = unpack("La/fb/fc/fd/fe/ff/fg/fh",$bytes);
print_r(array_values($un));

编辑(如果你想要第一个索引 1):

$bytes = fread($handle,"32");
$un = unpack("La/fb/fc/fd/fe/ff/fg/fh",$bytes);
array_unshift($un, NULL);
$array = array_values($un);
unset($array[0]);
print_r($array);

【讨论】:

那将是基数 0 而不是基数 1

以上是关于在 php unpack 函数中搜索正确的格式的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地在 PHP 中对字符串进行 URL 编码?

Qt4 中的 PHP unpack() 模拟函数

PHP注意:遇到格式不正确的数值[重复]

为啥函数在 php 中以 @ 开头?像@unpack(xxx)? [复制]

如何正确运用PHP json_encode函数进行中文转换

如何在php中正确的使用json(转)