PHP Foreach副本-GameQ
我正在尝试创建一个游戏服务器PHP脚本,用于与我的工作,因为没有一个我喜欢的 我让它几乎可以工作,但我在foreach中得到了副本。 下面是我的代码,我已经去掉了几乎所有的html代码,所以主要是PHP代码PHP Foreach副本-GameQ,php,loops,foreach,Php,Loops,Foreach,我正在尝试创建一个游戏服务器PHP脚本,用于与我的工作,因为没有一个我喜欢的 我让它几乎可以工作,但我在foreach中得到了副本。 下面是我的代码,我已经去掉了几乎所有的html代码,所以主要是PHP代码 <?php require '../GameQ.php'; $servers = array( array('id' => 'CSGO 1','type' => 'csgo','host' => '130.185.144.100:27015'),
<?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
steam://connect/130.185.144.100:27015/
[MG-1]Mestro冲浪|初学者-学习冲浪|高TR |快速DL
14
48
冲浪妈妈
130.185.144.100
27015
steam://connect/173.199.73.230:27015/
GameServers.com提供的RivalTide.com社区服务器
0
30
德鲁粉尘
173.199.73.230
27015
csgo steam://connect/130.185.144.100:27015/ [MG-1]Mestro冲浪|初学者-学习冲浪|高TR |快速DL 14 48 冲浪妈妈 130.185.144.100 27015 steam://connect/173.199.73.230:27015/ GameServers.com提供的RivalTide.com社区服务器 0 30 德鲁粉尘 173.199.73.230 27015
布雷艇 欢迎使用Multiplay服务器! 0 8. 世界 85.236.100.111 28365
有人能帮忙吗
谢谢您将在同一阵列上循环两次:
foreach ($results as $game) {
及
我认为第二个循环应该是
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>';
}
foreach($results as$server){
$game=$server['gq_type'];
echo$game.“
”;
如果($server['gq_type']==$game){
如果($server['gq_joinlink']!=''){
echo$server['gq_joinlink'].
;
}
echo$server['gq_hostname'].
;
echo$server['gq_numplayers'].
;
echo$server['gq_maxplayers']。
;
echo$server['gq_mapname'].
;
echo$server['gq_address'].
;
echo$server['gq_port'].
';
}
回音“
”;
}
这将阻止它重复两次。为什么要在同一个数组上执行两个相互缠绕的foreach循环?因为我不确定foreach nested的作用是什么,所以当使用Richard的上述命令时,它不会将细节传递给第二个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>';
}