Php 返回功能不工作

Php 返回功能不工作,php,function,return,phpmqtt,Php,Function,Return,Phpmqtt,我使用phpMQTT从MQTT代理订阅数据。我已经成功地建立了一个基于基本实现的发布/订阅例程。我可以在procmg函数中很好地回显信息 但是,我需要获取接收到的数据,并将其用于运行一些数据库操作等。我似乎无法访问procmsg函数之外接收的主题或消息。使用下面的return似乎不会产生任何效果 <?php function procmsg($topic, $msg){ $value = $msg * 10; return $value; } echo procmsg($topi

我使用phpMQTT从MQTT代理订阅数据。我已经成功地建立了一个基于基本实现的发布/订阅例程。我可以在procmg函数中很好地回显信息

但是,我需要获取接收到的数据,并将其用于运行一些数据库操作等。我似乎无法访问procmsg函数之外接收的主题或消息。使用下面的return似乎不会产生任何效果

<?php
function procmsg($topic, $msg){
  $value = $msg * 10;
  return $value;
}

echo procmsg($topic, $msg);
echo $value;
?>

很明显,我做错了什么-但是我如何获得这些值以便在procmg之外使用它们呢?非常感谢。

我不知道这个库,但是在代码中 , 这是可能的,看看如何工作

在:

您正在告诉它,主题EDAFDF398FB22847A2F98A15CA3186E/将具有服务质量qos=0,并且有一个名为“procmg”的事件。 这就是你后来写这篇文章的原因

function procmsg($topic,$msg){ ... }
因此,在while$mqtt->proc中,此函数将检查每次是否有新的消息行332调用消息函数,然后调用源代码的procmg

这就是为什么您不能将代码调用到procmg的原因

换句话说,在PROCMG内,您可以调用函数来处理消息ej:

function procmsg($topic,$msg){ 
    $value = $msg * 10;
    doStuffWithDataAndDatabase($value);
}
请注意,只需ej即可更改函数的名称:

$topics['edafdff398fb22847a2f98a15ca3186e/#'] = array("qos"=>0, "function"=>"onMessage");
然后:

function onMessage($topic,$msg){ 
    $value = $msg * 10;
    doStuffWithDataAndDatabase($value);
}

对不起我的英语,希望这有帮助

尝试使用print_rprocmsg$topic$msg;还有一个,;打开函数procmsg$topic$msg时使用分号{谢谢Antonis-print_r没有产生任何结果,分号现在被删除了,但没有产生任何影响。您是否能够查看是否发生了任何错误?嗨,Joa,谢谢!我现在正在procmsg中运行整个db循环等。我不确定这是绝对最好的方法,但它现在起作用了。真的没有一种方法可以简单地使用$msg和$topic的值在procmg函数之外可用?您好!我能想到的唯一方法是将这些值放入全局变量中,但我不建议这样做,另一种方法是在缓冲区中也考虑全局值,一个简单的数组,您可以按到达顺序存储这两个值
function onMessage($topic,$msg){ 
    $value = $msg * 10;
    doStuffWithDataAndDatabase($value);
}