Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Foreach副本-GameQ_Php_Loops_Foreach - Fatal编程技术网

PHP Foreach副本-GameQ

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脚本,用于与我的工作,因为没有一个我喜欢的

我让它几乎可以工作,但我在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 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>';
}