0

我正在尝试添加一个特定的变量(gq_numplayers)并显示它。如果数组在数组中,我该怎么做?如果您不明白发生了什么,我正在使用 GameQ (https://github.com/Austinb/GameQ/)。

编辑:var_dump ($results); http://pastebin.com/BSeeWMEb

    <?php
// Include the main class file
require '../GameQ.php';

// Define your servers,
// see list.php for all supported games and identifiers.
$servers = array(
    array(
        'id' => 'server 1',
        'type' => 'css',
        'host' => '216.52.148.30',
    ),
    array(
        'id' => 'server 2',
        'type' => 'css',
        'host' => '216.52.143.83',
    ),
    array(
        'id' => 'server 3',
        'type' => 'teamspeak3',
        'host' => 'voice.xenogamers.org:8730',
    )
);

// Init the class, only need this once
$gq = new GameQ();
$gq->addServers($servers);

//optional settings
$gq->setOption('timeout', 3); // Seconds
$gq->setOption('debug', TRUE);

// You can optionally specify some output filters,
// these will be applied to the results obtained.
$gq->setFilter('normalise');

// Send requests, and parse the data
$results = $gq->requestData();

//make total
$total = array_sum(?!?!?!??!?!?);

echo $results['server 1']['gq_numplayers'];
?>
4

3 回答 3

0

只需遍历服务器并将玩家数量添加到运行总数中即可。

$num_players = 0;
foreach ($results as $server) {
    $num_players += (int)$server['gq_numplayers'];
}
于 2012-11-09T03:43:06.720 回答
0

如果你在 $ArrayA 中有 $ArrayB,那么你需要一个循环。像这样使用 foreach 循环 $ArrayA:

foreach ($ArrayA as $item) {

}

在该循环中,您需要添加代码以对 $item 进行操作。所以每次循环迭代时,$item 将是数组中的下一项!您可以使用在进入循环之前声明的变量(例如 $counter)将它们全部加起来。

但我也注意到您指出了这一点: echo $results['server 1']['gq_numplayers'];

那不是数组中的数组。那是一个单一的二维数组。所以我的回答甚至不会直接适用于它。你必须稍微改变一下循环。

于 2012-11-09T03:44:21.010 回答
0

您可以尝试通过 array_walk() 自己添加它。

我不确定 requestData() 调用后的 $results 结构,但我们假设它看起来像下面的示例数组:

<?php
$results= array(
        array(
        'something'     => 'text',
        'gq_numplayers' => 1,   
        ),
        array(
        'something'     => 'text',
        'gq_numplayers' => 2,   
        ),
        array(
        'something'     => 'text',
        'gq_numplayers' => 3,   
        ),
    );
$total=0;
array_walk($results,function($value,$key) use(&$total) {
    $total+=(int)$value['gq_numplayers'];
});
print $total."\n";
于 2012-11-09T03:45:03.833 回答