Добавьте последовательные числа, чтобы дублировать значения внутри цикла while

Я вытаскиваю данные из таблицы под названием диспетчер задач. Один из столбцов содержит «assigned_user_id» и может встречаться несколько раз.

Я пытаюсь выяснить, как добавить последовательные номера, где заданный_user_id такой же (дубликат).

Но я действительно не знаю, с чего начать.

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

И я не знаю, правильный ли это путь.

Счетчик внутри цикла:

$CountOccurence = $conn->prepare("SELECT COUNT(task_assigned_user) FROM taskmanager WHERE task_assigned_user = ?");
$CountOccurence->bind_param("i", $gettaskassigneduser);
$CountOccurence->execute();
$CountOccurence->bind_result($total);
    while ($CountOccurence->fetch()) {
        echo "(".$total.")";
    }                                   
$CountOccurence->close();

Это дает:

Normal sequential counter   Assigneduserid     **sequential by assigned_user_id**
  1                              1                          2 ($total)
  2                              2                          2 ($total)
  3                              2                          2 ($total)
  4                              4                          1 ($total)
  5                              1                          2 ($total)

То, что я хотел бы иметь, это:

Normal sequential counter   Assigneduserid     **sequential by assigned_user_id**
  1                              1                          1
  2                              2                          1
  3                              2                          2
  4                              4                          1
  5                              1                          2

Может кто-нибудь, пожалуйста, помогите мне или укажите мне направление, в котором я могу посмотреть. Спасибо.

Просто добавьте идентификаторы пользователей в массив, затем вы можете использовать array_count_values, чтобы легко определить, сколько раз каждый из них встречался до сих пор.

CBroe 05.05.2022 11:10

Не могли бы вы уточнить. Я просмотрел array_count_values ​​перед своим вопросом, но не мог понять, как считать 1, 2 уникальными для каждого Assigneduserid. Я получил тот же результат, просто отображая общее количество, кроме каждого Assigneduserid.

MauiRiis 05.05.2022 11:13

Вы не выполняете запрос подсчета внутри другого цикла, не так ли??? Если это так, я бы порекомендовал JOIN или что-то еще, чтобы уменьшить общее количество обращений к базе данных.

mickmackusa 05.05.2022 11:25

Я. Потому что я пытался получить результат выше. Но пока не повезло. Даже с array_count_values.

MauiRiis 05.05.2022 11:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто добавьте идентификаторы пользователей в массив, пока вы перебираете данные, а затем вы можете использовать array_count_values, чтобы легко определить, сколько раз каждый из них встречался до сих пор.

В первой итерации цикла вы добавляете AUid 1 в свой массив, затем array_count_values вернет вам массив [1 => 1]. Таким образом, вы используете свой AUid 1 в качестве ключа для доступа к значению 1 и выводите его в свой 3-й столбец.

Во второй итерации цикла вы добавляете AUid 2 в свой массив. Тогда array_count_values вернется [1 => 1, 2 => 1]. Теперь вы используете AUid 2 для доступа к этому значению 1 и выводите его в свой 3-й столбец.

В третьей итерации цикла вы добавляете еще один AUid 2 в свой массив. Тогда array_count_values вернется [1 => 1, 2 => 2]. Теперь вы используете AUid 2 для доступа к этому значению 2 и выводите его в свой 3-й столбец.

И так далее ...

Мне очень жаль CBroe, но я не знаю, как это сделать. Как только я использую array_count_values, отображается ошибка. Может считать только целое число или строку. Есть ли шанс, что вы можете взглянуть на мой код здесь?: (Строка 181 - это то, где я хотел бы получить последовательный результат - это нормально, если вы тоже не хотите) jsfiddle.net/MauiRiis/5fv1mkxt

MauiRiis 05.05.2022 11:53
«Как только я использую array_count_values, он отображает ошибку. Может считать только целое число или строку». - ну, тогда вы, должно быть, поместили в массив что-то еще, кроме фактического целочисленного или строкового значения. Но ваш код в скрипке еще не содержит ничего из этого?
CBroe 05.05.2022 12:04

Я обновил код. Строка 192 получила массив array_count_values ​​(значение массива находится в строке 113. Что отображает: Предупреждение: array_count_values(): Может подсчитывать только значения STRING и INTEGER! в /volume1/WEB/test/taskmanager.php в строке 220 Array ([34] => 1 [30] => 1 [2] => 2 [35] => 1 )

MauiRiis 05.05.2022 12:08

Пожалуйста, поделитесь URL-адресом текущей версии вашей скрипки, потому что jsfiddle.net/MauiRiis/5fv1mkxt по-прежнему нигде не содержит array_count_values.

CBroe 05.05.2022 12:15

Пытаюсь снова. array_count находится в строке 122. Значение массива ($gettaskassigneduser) находится в строке 43 — jsfiddle.net/MauiRiis/5fv1mkxt/4

MauiRiis 05.05.2022 12:50

Вы пытаетесь использовать $gettaskassigneduser как массив и скалярное значение, и то, и другое одновременно не имеет смысла. Если это массив, то такие вещи, как $showresponsible->bind_param("i", $gettaskassigneduser); и if ($gettaskassigneduser != $Userid), не имеют особого смысла. Используйте другое имя переменной для массива.

CBroe 05.05.2022 13:02

Я попытался изменить $gettaskassigneduser = $row["task_assigned_user"]; to $countassigneduser[] = $row["task_assigned_user"]; не помогло. Та же ошибка. Извини. Я немного потерялся здесь. Это не в моей лиге.

MauiRiis 05.05.2022 13:22

$countassigneduser — это всего лишь 2,4,56,22,45,24 и т. д. Значит, в array_count_arrays отсутствует компонент?

MauiRiis 05.05.2022 13:24

Что ты имеешь в виду, "отсутствует компонент"?

CBroe 05.05.2022 13:27

Это также выглядит так (jsfiddle - это нет, хорошее место для представления PHP-кода, без подсветки синтаксиса, трудно читаемое), вы только вызываете функцию после в цикле - это, конечно, не имеет смысла, вам нужно подсчитать количество вхождений Текущий , в течение цикл.

CBroe 05.05.2022 13:29

Думаю, вы должны ударить по нему. Извини. print_r($countassigneduser); дает = Массив ([0] => 34 [1] => 30 [2] => 2 [3] => [4] => 2 [5] => 35) 6 Но $arr = array_count_values($countassigneduser) ; print_r ($ обр); дает ошибку.

MauiRiis 05.05.2022 13:29

Я не знаю, где поделиться. Вставить?: pastebin.com/Aan02h9t

MauiRiis 05.05.2022 13:30

Результат внутри цикла. ibb.co/4RhHz1d

MauiRiis 05.05.2022 13:34

Правильный отступ в коде значительно облегчит чтение...

CBroe 05.05.2022 13:38

Замените часть, в которой вы в данный момент вызываете array_count_values ​​и печатаете результат, на var_dump($countassigneduser);, чтобы мы могли видеть, какие значения на самом деле находятся там на данный момент.

CBroe 05.05.2022 13:39

Но единственная строка, в которую вы добавляете элементы, выглядит как $countassigneduser[] = $row["task_assigned_user"];, так что это должно означать, что тогда $row["task_assigned_user"] не содержит фактического значения идентификатора. Разве не все ваши задачи имеют назначены пользователем? Если да, то это то, что вы должны были упомянуть!

CBroe 05.05.2022 13:41

Только тогда добавьте элемент для текущей записи, если этот назначенный пользователь действительно существует - if ($row["task_assigned_user"]) { $countassigneduser[] = $row["task_assigned_user"]; }. А в том месте, где вы хотите вывести этот порядковый номер, должно стоять if ($row["task_assigned_user"]) { echo array_count_values($countassigneduser)[$row["task_assigned_u‌​ser"]]; } то.

CBroe 05.05.2022 13:44

Вот маг столов. ibb.co/1sB2HSV — task_assigned_user не всегда заполняется. Извините, если какой-то информации не было. Не специально. Я действительно новичок в php.

MauiRiis 05.05.2022 13:44

Так это было только потому, что в столбце могла быть пустая ячейка. Я не думал об этом.

MauiRiis 05.05.2022 13:47

Другие вопросы по теме