我正在尝试使用GameQ创建一个游戏服务器PHP脚本来处理我的XenForo,因为没有我喜欢的。
我几乎可以使用它,但我在foreach中得到重复。 下面是我的代码,我已经删除了几乎所有的html代码,所以它主要是PHP代码。
<?php
require '../GameQ.php';
$servers = array(
array('id' => 'CSGO 1','type' => 'csgo','host' => '130.185.144.100:27015'),
array('id' => 'CSGO 2','type' => 'csgo','host' => '173.199.73.230:27015'),
array('id' => 'Minecraft 1','type' => 'minecraft','host' => '85.236.100.111:28365'),
);
$gq = new GameQ();
$gq->addServers($servers);
$gq->setOption('timeout', 4); // Seconds
$gq->setFilter('normalise');
$results = $gq->requestData();
foreach ($results as $game) {
$game = $game['gq_type'];
echo $game . '<br>';
foreach ($results as $key => $server) {
if ($server['gq_type'] == $game) {
if ($server['gq_joinlink'] !='') {
echo $server['gq_joinlink'] . '<br>';
}
echo $server['gq_hostname'] . '<br>';
echo $server['gq_numplayers'] . '<br>';
echo $server['gq_maxplayers'] . '<br>';
echo $server['gq_mapname'] . '<br>';
echo $server['gq_address'] . '<br>';
echo $server['gq_port'] . '<br><br>';
}
}
echo '<br><hr><br>';
}
?>
这是输出,但您会看到它正在输出csgo服务器的副本。
CSGO 蒸汽://connect/130.185.144.100:27015 / [MG-1] Mestro Surf |初学者 - Learn2Surf |高TR | FastDL 14 48 surf_mom 130.185.144.100 27015
蒸汽://connect/173.199.73.230:27015 / GameServers.com的RivalTide.com社区服务器 0 三十 de_dust 173.199.73.230 27015
CSGO 蒸汽://connect/130.185.144.100:27015 / [MG-1] Mestro Surf |初学者 - Learn2Surf |高TR | FastDL 14 48 surf_mom 130.185.144.100 27015
蒸汽://connect/173.199.73.230:27015 / GameServers.com的RivalTide.com社区服务器 0 三十 de_dust 173.199.73.230 27015
的Minecraft 欢迎使用Multiplay服务器! 0 8 世界 85.236.100.111 28365
任何人都可以提供帮助。
由于
答案 0 :(得分:2)
你在同一个数组上循环两次:
foreach ($results as $game) {
和
foreach ($results as $key => $server) {
我认为第二个循环应该是
foreach ($game as $key => $server) {
从代码中取出第二个foreach:
foreach ($results as $server) {
$game= $server['gq_type'];
echo $game. '<br>';
if ($server['gq_type'] == $game) {
if ($server['gq_joinlink'] !='') {
echo $server['gq_joinlink'] . '<br>';
}
echo $server['gq_hostname'] . '<br>';
echo $server['gq_numplayers'] . '<br>';
echo $server['gq_maxplayers'] . '<br>';
echo $server['gq_mapname'] . '<br>';
echo $server['gq_address'] . '<br>';
echo $server['gq_port'] . '<br><br>';
}
echo '<br><hr><br>';
}
这将阻止它回响两次。