PHP的unpack中$format中使用变量的问题

bandaoyu 2018-02-05 02:52:27
下面是我的函数,我想在 $format中使用变量$msgLen,但是因为$msgLen和Msg挨在了一起,编译其不能识别,以为是msgLenMsg,请问我应该怎么做才能在$format中使用变量?


function GetMsgData($Segment)
{
$msgLen = $Segment->SegmentLen - 12;
$format = 'SfHead/SflowLen/CmsgStatus/CsendIndex/SmsgType/SmsgIDL/SmsgIDH/a[color=#FF0000]$msgLen
Msg';[/color]

$seg = unpack($format, $Segment->Segment);

print_r($seg);

$msg = new MsgData;


$flow_len = $seg['flowLen'];
$msgStatus = $seg['msgStatus'];
$sendIndex = $seg['sendIndex'];

$msgIDH = $seg['msgIDH'];
$msgIDL = $seg['msgIDL'];

$msgID = $msgIDH << 16 + $msgIDL;

$msgBuff = $seg['Msg'];


$msg->MsgDataLen = $msgLen;
$msg->MsgData = $msgBuff;
$msg->MsgType = $seg['msgType'];

return $msg;
}


...全文
2195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bandaoyu 2018-02-26
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
$format = "SfHead/SflowLen/CmsgStatus/CsendIndex/SmsgType/SmsgIDL/SmsgIDH/C{$msgLen}Msg";
原来如此! 老大回答真迅速,谢谢!!
xuzuning 2018-02-26
  • 打赏
  • 举报
回复
$format = "SfHead/SflowLen/CmsgStatus/CsendIndex/SmsgType/SmsgIDL/SmsgIDH/C{$msgLen}Msg";
bandaoyu 2018-02-26
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
花括号! 没看到你的怎么写的,自然不好指出问题所在
$format = 'SfHead/SflowLen/CmsgStatus/CsendIndex/SmsgType/SmsgIDL/SmsgIDH/C$msgLenMsg'; $msgLen和Msg 挨在一起了,php认不出,所以我暂时用下面的代替。应该如果如何解决?$msgLen{}Msg; 这样吗? $format = 'SfHead/SflowLen/CmsgStatus/CsendIndex/SmsgType/SmsgIDL/SmsgIDH/a*Msg';
xuzuning 2018-02-09
  • 打赏
  • 举报
回复
花括号! 没看到你的怎么写的,自然不好指出问题所在
bandaoyu 2018-02-09
  • 打赏
  • 举报
回复
引用 1 楼 glenshappy 的回复:
使用分隔符号将长度和内容分成两个
用什么分隔符? 举个例子
glenshappy 2018-02-05
  • 打赏
  • 举报
回复
使用分隔符号将长度和内容分成两个

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧