0

Teamspeak 3 サーバー (親と子のチャネル/カテゴリ、および子チャネルへの子チャネルなどがある) のチャネル ビューアーをコーディングしようとしていますが、スタイルを設定してパディングを追加しようとすると、それがどこにあるかによって異なります。 、失敗し、次のようになります。

どのように見えるか

次のように見えるはずですが:(明らかにスタイルは良くありませんが、私の主張は理解できます)

どのように見えるべきか

これが私のコードです:

private $_allChannels   = array();
private $_allClients    = array();

private function showChannels($parentID, $padding)
{
    $response   = '';

    foreach ($this->_allChannels as $channel) {
        $channelParent  = $channel['pid'];
        $channelID      = $channel['cid'];
        $channelName    = $channel['name'];

        if ($channelParent == $parentID) {
            $response   .= '<span style="margin-left: ' . $padding*2 . 'em;">' . $channelName . '</span><br>';
            $response   .= $this->showChannels($channelID, $padding++);
        }
    }

    return $response;
}

public function index()
{
    $teamspeakServer    = TeamSpeak3::factory("serverquery://user:pass@IP:QueryPort/?server_port=ServerPort");

    $allClients         = $teamspeakServer->clientList(['client_type' => 0]);
    $allChannels        = $teamspeakServer->channelList();

    foreach ($allChannels as $channel) {
        array_push($this->_allChannels, array('pid' => $channel['pid'], 'name' => $channel['channel_name'], 'cid' => $channel['cid']));
    }

    echo $this->showChannels(0, 0);
}

どんな助けにも感謝します、ありがとう!

4

1 に答える 1

1

コードを読むと、常にパディングを追加しているだけです。$padding++は値をインクリメントし、 に保存し直します$padding。次のループでは、再び追加を続けます。推測する必要がある場合は、1 を追加するだけで、新しい値で$padding+1上書きしないようにする必要があります。$padding$padding+1

于 2016-07-15T21:46:22.177 に答える