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

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 に答える
0

$ArrayA 内に $ArrayB がある場合は、ループが必要です。次のように foreach で $ArrayA をループします。

foreach ($ArrayA as $item) {

}

そのループ内で、$item を操作するコードを追加する必要があります。したがって、ループが繰り返されるたびに、$item が配列の次の項目になります! $counter などのループに入る前に宣言された変数を使用して、それらをすべて加算できます。

しかし、あなたがこれを示したことにも気づいています: echo $results['server 1']['gq_numplayers'];

それは配列内の配列ではありません。これは単一の 2 次元配列です。したがって、私の答えはそれに直接適用されることさえありません。ループを多少変更する必要があります。

于 2012-11-09T03:44:21.010 に答える