2012-10-29 37 views
0

我確定我的標題並不真正有幫助。我想要做的是這個,我有一個名單在他們陣列。我也有一個動態數組,它是從一個外部XML文件生成的。我想要做的是如果找到一個名字然後回顯每一個名字。我仍在努力學習PHP技能,但是我無法按照自己的需要進行工作。我搜索了幾個小時試圖找到可以工作但沒有任何東西的東西。我可能無法正確搜索。使用in_array查找名稱,然後僅回顯找到的值?

這是我想要做的代碼。

// 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>'; 

我該怎麼做呢?如果有人知道如何或理解我想要做什麼。

回答

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>'; 
+0

你之後我能得到我想要的東西。我從來沒有想過這樣做,但正如我所說的PHP還有些新鮮。 –

+0

最後一件事情,如果數組是空的我怎麼能沒有顯示任何內容,所以它不顯示關於它不是一個數組與implode的警告消息?我可以只用一個else語句嗎? –

+0

別管我最後一個問題。自己回答。忘記了is_array函數。 –

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); 

       } 
      } 
0
$Alist[] = $admname['name']; 
      if(in_array($Alist, $admins)) { 
       $adminlist = $admname['name']; 
       $countAlist = count($adminlist); 
      } 

是奇怪:你正在尋找一個數組($ ALIST)在另一個數組($ admins)中。

我想你應該寫在這裏是

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

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

不意味着一件事是什麼:您計算一個字符串(名稱),而不是一個數組。 ..

0

聽起來像是array_intersect()工作:

array_intersect - 有限mputes數組的交集
<?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