Array - слушать только один раз на всех линиях - PullRequest
0 голосов
/ 20 марта 2019

У меня проблема с sql / pdo, мне нужен список массивов с такими серверами:

$servers = array(
    'server 1' => array('quake3', '194.109.69.61'),
    'server 2' => array('cssource', '194.109.69.51', 27015),
    'server 3' => array('bf2142', '194.109.69.21'),     
    'server 4' => array('ts3', 'voice.planetteamspeak.com')
);

Мне нужно получить всю информацию из mysql, где 'server 1' 'quake3' '194.109.69.61' с $ row [1], я использовал это так:

foreach($result as $row) {
    $servers = array(
        'server 1' => array('cs', $row[9], $row[10])
    );
}

Но показывать только один и тот же результат на всех строках.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Вам неясно, откуда взято "имя сервера" (например, "server 1") или "тип игры" (например, "cs").

Однако некоторые вещи понятны. Вы перезаписываете массив $servers каждой новой строкой.

Нечто подобное даст лучшие результаты:

$servers = array(); // or []
foreach ($result as $n => $row) {
    $servers['server ' . ($n+1)] = array('cs', $row[9], $row[10]);
}

Это даст вам массив серверов. Все они будут типа «cs». Я бы предположил, что тип игры - еще одна из ваших колонок ...

Возможно, было бы яснее вернуть ассоциативный массив, поэтому вы можете использовать имена столбцов, а не номера индексов. например,

$servers = array(); // or []
foreach ($result as $n => $row) {
    $servers['server ' . ($n+1)] = array($row['game'], $row['ip'], $row['port']);
}
0 голосов
/ 20 марта 2019

Вы повторно назначаете один и тот же массив ( переопределять данные ) в $servers на каждой итерации - вам лучше добавить каждую строку в массив результатов.

Учтите следующее:

foreach($result as $k => $row) {
    $key = 'server ' . $k; // as "server 1", "server 2" etc...
    $servers[$key] = array('cs', $row[9], $row[10]);
}

Теперь вы можете увидеть свой результат в $servers

Отредактированный

Если вы хотите, чтобы каждый игрок находился в новой строке, вставьте <td> во вложенный цикл for как:

foreach($result as $row) { 
    foreach ($results as $r) { 
        echo "<tr><td align='center'>$row[17]</td><td align='left'>$row[1]</td><td align='center'>$row[9]:$row[10]</td>";
        echo "<td align='center'>".$r['num_players']."/".$r['max_players']."</td>"; echo "<td align='center'>".$r['map']."</td></tr>"; 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...