0

私のタイトルはそれほど役に立たなかったと確信しています。私がやろうとしているのはこれです。名前が入った配列があります。また、外部 xml ファイルから foreach で生成される動的配列もあります。私がやりたいのは、名前が見つかった場合、それぞれをエコーアウトすることです。私はまだPHPスキルに取り組んでいますが、これを希望どおりに機能させるために何をすべきか途方に暮れています。うまくいくものを見つけようと何時間も検索しましたが、何も見つかりませんでした。私はおそらく正しく検索していません。

これが私がやろうとしているコードです。

// This just gets how many players ore on the US team
$serverplayer = $gameME_sdk_object->client_api_serverinfo("".$ip."/players/usarmy");
        foreach($serverplayer['serverinfo'][0]['teams'] as $mainserver) {
            if($mainserver['name'] == "usarmy") {
                $dacount = $mainserver['count'];
            }
        }
        if($dacount >= 1)
            // Begins Admin List/Count
            $admins = array("INFIDEL_HARE", "Romania191", "mardog104", "INFIDEL_JIHAD", "stvnsng", "HellKnightFire", "McThump", "INFIDEL_JByrns93", "INFIDEL_ALPHA", "s0ck37", "Zepppster", "xRingmasteressx", "FreeeKillz", "smokert", "Ccls2", "INFIDEL_GRIF", "cuzco2585", "Prophet731", "KittensDrunk", "Rexperience-EF", "Whickerbasket", "InfamousHoole", "Cruz_5326", "-Grimreaperx9-", "JoeyT2");
            foreach($serverplayer['serverinfo'][0]['players'] as $admname) {
                $Alist[] = $admname['name'];
                if(in_array($Alist, $admins)) {
                    $adminlist = $admname['name'];
                    $countAlist = count($adminlist);
                }
            }
            // Ends Admin List/Count
            // Everything below is just the data
            echo '<div class="four-columns six-columns-tablet twelve-columns-mobile">';
            echo '<pre>';
            echo $adminlist;
            echo '</pre>';
            echo "<div class=\"table-header\">US (".$dacount.")</div>";
            echo '<table class="table responsive-table" id="scoreboard">';
            echo '<thead>';
            echo '<tr>';
            echo '<th scope="col" width="2%">Sq</th>
            <th scope="col">Name</th>
            <th scope="col" width="2%">K</th>
            <th scope="col" width="2%">D</th>
            <th scope="col" width="5%" class="hide-on-mobile hide-on-tablet hide-on-mobile-portrait">Cheat Meter</th>';
            echo '</tr></thead>';
            echo '<tbody>';
            foreach($serverplayer['serverinfo'][0]['players'] as $player) {
                echo '<tr>';
                if ($player['team'] == "unassigned" Xor $player['team'] == "None") {            
                    $team = "<small class=\"tag green-gradient glossy\">Joining</small>";
                }
                echo "<td class=\"low-padding\">".ucfirst($player['squad'])."</td>";
                echo "<td class=\"low-padding\"><a href=\"http://battlelog.battlefield.com/bf3/user/".$player['name']."\" target=\"_blank\"><img src=\"./img/battlelog.png\" alt=\"Battlelog Profile\" width=\"16\" height=\"16\"></a>&nbsp;".$player['name']."<span style=\"float: right\">".$team."</span></th>";
                echo '<td>'.$player['kills'].'</td>';
                echo '<td>'.$player['deaths'].'</td>';
                echo "<td><a href=\"http://panel.dev.adkgamers.com/?p=" . $player['name'] . "&id=cheatometer\"target=\"_blank\">Check</a></td>";
                echo '</tr>';
            }
            echo '</tbody>';
            echo '</table>';
            echo '</div>';

どうすればこれを行うことができますか?誰かが私がやろうとしていることを知っているか理解しているなら。

4

4 に答える 4

1

コードに従って変更する必要があります

 foreach($serverplayer['serverinfo'][0]['players'] as $admname) {
                //$Alist[] = $admname['name']; // there is no need to take this array
                if(in_array($admname['name'], $admins)) {
                    $adminlist[] = $admname['name']; // take this array because may be more than one admins are there
                    $countAlist = count($adminlist);
                }
            }
            // Ends Admin List/Count
            // Everything below is just the data
            echo '<div class="four-columns six-columns-tablet twelve-columns-mobile">';
            echo '<pre>';
            echo implode(",",$adminlist);// you can print all admins as comma separated
            echo '</pre>';
于 2012-10-29T08:37:52.297 に答える
0
$Alist[] = $admname['name'];
            if(in_array($Alist, $admins)) {
                $adminlist = $admname['name'];
                $countAlist = count($adminlist);
            }

奇妙です: 別の配列 ($admins) で配列 ($Alist) を探しています。

ここに書くべきだと思うのは

 if(in_array($admname['name'], $admins))

そのうえ

 $adminlist = $admname['name'];
 $countAlist = count($adminlist);

意味はありません:配列ではなく、文字列(名前)を数えています...

于 2012-10-29T08:39:33.190 に答える
0

array_intersect()の仕事のように聞こえます:

array_intersect — 配列の交点を計算する
<?php
foreach( array_intersect(playersFromLog(), playersAdmins()) as $admin) {
    echo $admin, "\n";
}

function playersFromLog() { 
    return array( 'A', 'B', 'C', 'E', 'F', 'G', 'H', 'I', 'J', 'X', 'Z' );
}

function playersAdmins() {
    return array( 'D', 'E', 'K', 'X', 'Y', 'Z' );
}

版画

E
X
Z
于 2012-10-29T08:40:07.007 に答える
0

この方法でやってみるといいと思います

$admins = array("INFIDEL_HARE", "Romania191", "mardog104", "INFIDEL_JIHAD", "stvnsng", "HellKnightFire", "McThump", "INFIDEL_JByrns93", "INFIDEL_ALPHA", "s0ck37", "Zepppster", "xRingmasteressx", "FreeeKillz", "smokert", "Ccls2", "INFIDEL_GRIF", "cuzco2585", "Prophet731", "KittensDrunk", "Rexperience-EF", "Whickerbasket", "InfamousHoole", "Cruz_5326", "-Grimreaperx9-", "JoeyT2");
            foreach($serverplayer['serverinfo'][0]['players'] as $admname) {
                $Alist = $admname['name'];//No need of saving to array
                if(in_array($Alist, $admins)) {
                   $adminlist[] = $admname['name'];//Save all the matching values to an array
                    $countAlist = count($adminlist);

                }
            }
于 2012-10-29T08:34:56.950 に答える