0

問題があります。私の関数では、リターンはサーバーからの最初のプレーヤーのみを表示します。サーバーからすべてのプレーヤーを表示したかったのですが、これを機能させることができません。これが私のコードです:

function players() {
    require_once "inc/SampQueryAPI.php";
    $query = new SampQueryAPI('uh1.ownserv.pl', 25052); // Zmień dane obok! //
    if($query->isOnline())
    {
        $aInformation = $query->getInfo();
        $aServerRules = $query->getRules();
        $aPlayers = $query->getDetailedPlayers();
        if(!is_array($aPlayers) || count($aPlayers) == 0)
        {
            return 'Brak graczy online';
        }
        else
        {
            foreach($aPlayers as $sValue)   
            {
                $playerid = $sValue['playerid'];
                $playername = htmlentities($sValue['nickname']);
                $playerscore = $sValue['score'];
                $playerping = $sValue['ping'];
                return '<li>'.$playername.' (ID: '.$playerid.'), Punkty ('.$playerscore.'), Ping ('.$playerping.')</li>';
            }
        }
    }
}
4

3 に答える 3

6

ループ内から戻ってきます。

代わりに、各反復の結果を連結してから、その連結された文字列をループの外に返す必要があります。

例えば

$result = "";
foreach($aPlayers as $sValue) {
   # add to $result...
}
return $result
于 2013-01-29T13:26:31.507 に答える
2
function players() {

    require_once "inc/SampQueryAPI.php";
    $query = new SampQueryAPI('uh1.ownserv.pl', 25052); // Zmień dane obok! //
    if($query->isOnline())
    {
         $aInformation = $query->getInfo();
         $aServerRules = $query->getRules();
         $aPlayers = $query->getDetailedPlayers();
         if(!is_array($aPlayers) || count($aPlayers) == 0)
         {
             return 'Brak graczy online';
         }
         else
         {
             $ret = '';
             foreach($aPlayers as $sValue)   
             {
                 $playerid = $sValue['playerid'];
                 $playername = htmlentities($sValue['nickname']);
                 $playerscore = $sValue['score'];
                 $playerping = $sValue['ping'];
                 $ret .=    '<li>'.$playername.' (ID: '.$playerid.'), Punkty ('.$playerscore.'), Ping ('.$playerping.')</li>'; 
             }
             return $ret;
          }
      }
  }
于 2013-01-29T13:27:01.183 に答える
1

関数では、1つの値しか返すことができませ

プレーヤーのリストを作成して、すべてのレコードがリストに追加されたらリストを返します。あなたの場合、プレーヤーのリストはプレーヤーの配列になります

于 2013-01-29T13:26:49.487 に答える