2016-07-15 5 views
0

Ich versuche, eine Kanalanzeige für meine Teamspeak 3-Server (die übergeordnete und untergeordnete Kanäle/Kategorien und untergeordnete Kanäle zu den untergeordneten Kanälen usw. hat), aber wann versuchen, es zu stylen und Polsterung hinzufügen hängt davon ab, wo es ist, es schlägt fehl, und stellt sich heraus, wie folgt aus:Padding beim Sortieren von Kategorien fehlschlägt und sortiert

how it looks

Während es wie diese aussehen soll ist: (natürlich nicht so gestylt, aber Sie bekommen meine Nummer)

how it's supposed to look

Hier ist mein Code:

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:[email protected]: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); 
} 

ich Hilfe zu schätzen wissen, danke!

+0

Beide Bilder sind gleich. –

+0

Whoops, mein Schlechter. Jetzt behoben. –

+0

Haben Sie Beispieldaten zum Testen? Nur eine Funktion zu zeigen, die Ihren Server abfragt, hilft uns nicht viel, um die Daten zu erzeugen, die es gibt. –

Antwort

1

Wenn Sie den Code überlesen, werden Sie ständig zum Padding hinzugefügt. $padding++ wird den Wert erhöhen und in $padding speichern. Bei der nächsten Schleife fügst du es immer wieder hinzu. Wenn ich raten müsste, würde das nur $padding+1 sein, was 1 hinzufügen, aber $padding nicht mit dem neuen $padding+1 Wert überschreiben würde.