PHP Count генерирует результаты из цикла

0

У меня есть цикл for, который генерирует 10 результатов:

    <?php

    include "dbconnect.php";

    $table = "SELECT id FROM players ORDER BY RAND()* ( 1 / percentage)";

    for ($i = 0; $i < 10; $i++){

        $result[0] = mysql_fetch_array(mysql_query($table));

        foreach ($result as $winner){

            echo $winner[0] . " ";

        }

    }


?> 

Он генерирует результат, например:

10 10 11 9 13 11 10 12 8 12

Мой вопрос: как я могу считать поколение? В приведенном выше примере это будет:

8 = 1, 9 = 1, 10 = 3, 11 = 2, 12 = 2, 13 = 1.

Я в основном хочу подсчитать количество конкретных результатов. Извините, если я не понимаю.

  • 0
    Пожалуйста, задайте свой вопрос более четко. Что именно вы будете считать?
Теги:
for-loop
loops
count

2 ответа

0
Лучший ответ

Вам нужно выйти из функций MySQL и проверить PDO или MySQLI как минимум. Но для мяса вопроса:

  1. Не запускайте запрос, полный или ограниченный в цикле
  2. Посмотрите предложение LIMIT в запросе
  3. array_count_values будет считать значения. Вы можете зацикливать его и эхо или что угодно

Пример:

$table  = "SELECT id FROM players ORDER BY RAND()*(1/percentage) LIMIT 10";
$result = mysql_query($table);

while($row = mysql_fetch_array($result)) {
    $winner[] = $row[0];
}
echo implode(' ', $winner);

foreach(array_count_values($winner) as $number => $count) {
    $output = "$number = $count";
}
echo implode(', ', $output);

Вы существующий код, чтобы сделать случайный выбор работы будет выглядеть (LIMIT 1):

$table = "SELECT id FROM players ORDER BY RAND()*(1/percentage) LIMIT 1";

for($i = 0; $i < 10; $i++){
    $result = mysql_fetch_array(mysql_query($table));
    $winner[] = $row[0];
}
echo implode(' ', $winner);
  • 0
    Спасибо, но ваше решение генерирует 1 из каждого значения каждый раз, есть ли способ, где оно может выводить одно и то же значение более одного раза?
  • 0
    Не уверен, что я понимаю запрос с помощью rand () * (1 / процент). Может быть, ваш существующий код с LIMIT 1
Показать ещё 3 комментария
0

если вы проверите руководство по php: http://php.net/manual/en/function.mysql-query.php

затем попробуйте что-то вроде этого:

while ($row = mysql_fetch_assoc($table)) {
    echo $row['column_name'];
    echo $row['column_name'];
    //.. you get the idea
}

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

Я должен указать, что библиотека mysql устарела. Поэтому вы должны использовать вместо этого что-то вроде PDO.

  • 0
    Спасибо, я собираюсь заглянуть в PDO.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню