2

我仍在学习 PHP,这是我第一次使用这个库(TeamSpeak 3 PHP Framework),我试图返回特定组中的在线用户数,我尝试了几种不同的方法,但没有成功。

这一项,统计组内所有用户(包括离线用户):

$admins = 0;
foreach($ts3->serverGroupGetById(12)->clientList() as $client) {
    $admins++;
}

所以我尝试将该列表与在线用户列表进行比较:

$admins = 0;
foreach($ts3->serverGroupGetById(12)->clientList() as $client) {
    if($ts3->clientList($client)) {
        $admins++;
    }
}

它有时有效,我说有时是因为我在我的虚拟服务器上尝试过并且没有问题,计数是正确的,但是当我在另一个虚拟服务器上尝试它时(我更改了组 ID 和端口),我得到了这个:

Warning: preg_match(): Unknown modifier '9' in C:\xampp\htdocs\serverstatus\libraries\TeamSpeak3\Helper\String.php on line 192

该警告仅出现在某些服务器组中,我不知道原因。


$admins = 0;
foreach($ts3->clientList($client) as $client) {
    $admins++;
}

我想这段代码应该显示所有在线用户,但我对其进行了测试,但价值并不总是在线用户,就像我之前在我的虚拟服务器上所说的那样,它显示了正确的计数,但是当我在另一个虚拟服务器上尝试时,我得到了 48但是有61个用户在线。

4

1 回答 1

2

我知道那是一年前的事,但这可能会有所帮助,因为我在谷歌上搜索同样的问题,过了一段时间我发现了如何去做。

这是您正在寻找、测试并有效的内容:

   foreach($ts3_VirtualServer->serverGroupClientList(11) as $admins){
        foreach($arr_ClientList as $ts3_Client)
            if(in_array($ts3_Client['client_nickname'], $admins)){
                $adminsCount++;
            }
    }

希望它会有所帮助;)

于 2017-01-05T14:09:52.903 回答