4

Call of Duty 4 のプレイヤー リストの多次元配列があります。配列をエコーし​​ようとするとArray、サーバーには現在 30 人のプレイヤーがいるため、30 回返されます。

$promodplist (プレイヤーリスト) の Var_Dump

array(27) { 
    [0]=> array(6) { 
        ["frags"]=> string(1) "0" 
        ["ping"]=> string(2) "26"
        ["nick"]=> string(10) "DIVINEBRAH"
        ["gq_name"]=> string(10) "DIVINEBRAH"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "26" 
    }
    [1]=> array(6) {
        ["frags"]=> string(1) "0" 
        ["ping"]=> string(2) "35" 
        ["nick"]=> string(7) "><> <><" 
        ["gq_name"]=> string(7) "><> <><" 
        ["gq_score"]=> string(1) "0" 
        ["gq_ping"]=> string(2) "35" 
    } 
    [2]=> array(6) { 
        ["frags"]=> string(1) "0" 
        ["ping"]=> string(2) "42" 
        ["nick"]=> string(10) "xXthe0neXx" 
        ["gq_name"]=> string(10) "xXthe0neXx" 
        ["gq_score"]=> string(1) "0" 
        ["gq_ping"]=> string(2) "42" 
    } 

$servers['promod'] = array('cod4', '67.202.102.224');
$servers['promod2'] = array('cod4', '67.202.102.224');
$gq = new GameQ();
$gq->addServers($servers);
$results = $gq->requestData();
function print_results($results) {
foreach ($results as $id => $data)

そして、これは私が現在のプレーヤーをリストするために使用しようとしているものです.

$promodplist = $data['promod']['players'];
foreach($promodplist as $k => $v)

nick各配列の(ニックネーム)をエコーアウトしたいだけです。

4

4 に答える 4

8
$promodplist = $data['promod']['players'];
foreach($promodplist as $k => $v)
    print($v['nick']);

やりたいことをやればいい。foreach配列内のキーと値のペアを反復処理します。ここ$kで、 は要素のキー (この場合は 0 ベースのインデックス) で、$vは値 (プレイヤー データの配列) です。その名前を配列アクセサのキーとして使用することで、残りの情報にアクセスできます。

于 2012-08-06T03:39:52.100 に答える
2

こんな機能はいかがですか

function print_results($results) {

    foreach ($results as $id){
        echo ": Player Info :<br />";
        foreach($id as $key => $val){

            // add this line to only print out the "nick" field
            if ($key == "nick")
            echo "Field: " . $key . " - Value: " . $val . "<br />";
        }
    }
}

また、配列をフォーマットすると、作業内容を確認するのに役立ちます。1 つの長い行は、以下よりも解読がはるかに困難です。

array(27) {
    [0]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "26"
        ["nick"]=> string(10) "DIVINEBRAH"
        ["gq_name"]=> string(10) "DIVINEBRAH"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "26"
    }
    [1]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "35"
        ["nick"]=> string(7) "><> <><"
        ["gq_name"]=> string(7) "><> <><"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "35" 
    }
    [2]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "42"
        ["nick"]=> string(10) "xXthe0neXx"
        ["gq_name"]=> string(10) "xXthe0neXx"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "42" 
    }
    [3]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "50"
        ["nick"]=> string(5) "GenKY"
        ["gq_name"]=> string(5) "GenKY"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "50" 
    }
    [4]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "63"
        ["nick"]=> string(4) "dupe"
        ["gq_name"]=> string(4) "dupe"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "63" 
    }
    [5]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "72"
        ["nick"]=> string(7) "B2B vcc"
        ["gq_name"]=> string(7) "B2B vcc"
        ["gq_score"]=> string(1) "0"
        ["gq_ping"]=> string(2) "72" 
    }
    [6]=> array(6) {
        ["frags"]=> string(1) "0"
        ["ping"]=> string(2) "82"
        ["nick"]=> string(10) "[dB]tumble"
        ["gq_name"]=> string(10) "[dB]tumble"
        ["gq_score"]=> string(1) "0" 
    }
}
于 2012-08-06T04:08:16.470 に答える
1

これは、多次元配列から配列を構築するために使用する基本的な関数です。

function db_result_array($result, $key_column = null) { 
    for ($array = array(); $row = mysql_fetch_assoc($result); isset($row[$key_column]) ? $array[$row[$key_column]] = $row : $array[] = $row); 
    return $array; 
}
于 2012-08-06T03:53:47.573 に答える
1

あなたがやる:

$promodplist = $data['promod']['players'];
foreach($promodplist as $k => $v)
var_dump($promodplist);

これは、同じ var_dump() を 30 回実行することを意味します。コードに foreach() は必要ありません。これで十分です。

$promodplist = $data['promod']['players'];
var_dump($promodplist);

別のメモとして、他にできることは次のとおりです。

$promodplist = $data['promod']['players'];
echo "<pre>";
print_r($promodplist);
echo "</pre>";
于 2012-08-06T05:01:29.360 に答える