Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375

Подсчёт значений в массиве и вывод результатов

18.11.2024, 20:56. Показов 585. Ответов 6
Метки php (Все метки)

Студворк — интернет-сервис помощи студентам
$order_survey выводит массив:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Array
(
    [0] => Array
        (
            [ID] => 21
            [order_id] => 223988
            [event_id] => 4685
            [event_date] => 2024-12-08 12:00:00
            [room_name] => г. Иваново
            [survey_response] => 4
        )
 
    [1] => Array
        (
            [ID] => 22
            [order_id] => 223990
            [event_id] => 4685
            [event_date] => 2024-12-08 12:00:00
            [room_name] => г. Иваново
            [survey_response] => 1
        )
 
    [2] => Array
        (
            [ID] => 23
            [order_id] => 223990
            [event_id] => 4685
            [event_date] => 2024-12-08 12:00:00
            [room_name] => г. Иваново
            [survey_response] => 3
        )
 
    [3] => Array
        (
            [ID] => 25
            [order_id] => 223998
            [event_id] => 4685
            [event_date] => 2024-12-08 12:00:00
            [room_name] => г. Иваново
            [survey_response] => 3
        )
 
    [4] => Array
        (
            [ID] => 26
            [order_id] => 223998
            [event_id] => 4685
            [event_date] => 2024-12-08 12:00:00
            [room_name] => г. Иваново
            [survey_response] => 5
        )
 
)
Это таблица содержит ответы на опрос:

Номер ответа в survey_response
1 - Из детского сада
2 - Реклама в интернете
3 - Видео на экранах города
4 - Афиша в магазине или торговом центре
5 - Баннер в городе
6 - Посоветовали друзья или знакомые
7 - Были ранее на шоу, идем еще раз!

Как можно подсчитать результат, чтобы результат был такой:
Из детского сада - 1
Афиша в магазине или торговом центре - 1
Баннер в городе - 1
Видео на экранах города - 3

И правильно ли что в базе данных хранятся цифры, когда можно было передавать туда сразу сам ответ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2024, 20:56
Ответы с готовыми решениями:

Подсчет и вывод результатов теста
Доброго времени суток. Ситуация такая: Имеется таблица Тест, в ней 9 столбцов - КодПациента, Дата и 7 Ответов на вопросы. Варианты...

Осуществить вывод значений аргумента и результатов вычислений значений функции в заданном диапазоне с заданным шагом
1)Задание: Вычислить значение заданной функции. Осуществить вывод значений аргумента и результатов вычислений значений функции в заданном...

Вычислить значение заданной функции на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов вычислений значений функ
Вычислить значение заданной функции на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов вычислений...

6
926 / 549 / 291
Регистрация: 07.11.2022
Сообщений: 899
18.11.2024, 22:07
Цитата Сообщение от Fruit Посмотреть сообщение
Как можно подсчитать результат, чтобы результат был такой:
Для указанного вами результата нужны другие входные данные.

А так можно сделать вроде такого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
$order_survey = [
  [
    'ID' => 21,
    'order_id' => 223988,
    'event_id' => 4685,
    'event_date' => '2024-12-08 12:00:00',
    'room_name' => 'г. Иваново',
    'survey_response' => 4,
  ],
  [
    'ID' => 22,
    'order_id' => 223990,
    'event_id' => 4685,
    'event_date' => '2024-12-08 12:00:00',
    'room_name' => 'г. Иваново',
    'survey_response' => 1,
  ],
  [
    'ID' => 23,
    'order_id' => 223990,
    'event_id' => 4685,
    'event_date' => '2024-12-08 12:00:00',
    'room_name' => 'г. Иваново',
    'survey_response' => 3,
  ],
  [
    'ID' => 25,
    'order_id' => 223998,
    'event_id' => 4685,
    'event_date' => '2024-12-08 12:00:00',
    'room_name' => 'г. Иваново',
    'survey_response' => 3,
  ],
  [
    'ID' => 26,
    'order_id' => 223998,
    'event_id' => 4685,
    'event_date' => '2024-12-08 12:00:00',
    'room_name' => 'г. Иваново',
    'survey_response' => 5,
  ],
];
$survey_response = [
  1 => 'Из детского сада',
  2 => 'Реклама в интернете',
  3 => 'Видео на экранах города',
  4 => 'Афиша в магазине или торговом центре',
  5 => 'Баннер в городе',
  6 => 'Посоветовали друзья или знакомые',
  7 => 'Были ранее на шоу, идем еще раз!',
];
 
foreach ($survey_response as $key => $value) {
  $responses[$key] = 0;
}
 
foreach ($order_survey as $value) {
  $i = $value['survey_response'];
  $responses[$i]++;
}
 
foreach ($survey_response as $key => $value) {
  if ($responses[$key])
    echo "$survey_response[$key] — $responses[$key]<br>\n";
}
 
/* Выведет:
Из детского сада — 1
Видео на экранах города — 2
Афиша в магазине или торговом центре — 1
Баннер в городе — 1
*/
Добавлено через 1 минуту
Цитата Сообщение от Fruit Посмотреть сообщение
И правильно ли что в базе данных хранятся цифры, когда можно было передавать туда сразу сам ответ?
Без особой разницы. Как удобно так и делайте.
1
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
19.11.2024, 01:58  [ТС]
rr33rr, супер, в массиве он считает правильно. Но результат выводит по последней строке.
Миниатюры
Подсчёт значений в массиве и вывод результатов  
0
926 / 549 / 291
Регистрация: 07.11.2022
Сообщений: 899
19.11.2024, 06:56
Цитата Сообщение от Fruit Посмотреть сообщение
Но результат выводит по последней строке.
Покажите, что и как вы делаете? Результат чего и как выводите?

Если в моем примере в конце добавить строку:
PHP
1
print_r ($responses);
Выведет:
Code
1
2
3
4
5
6
7
8
9
10
Array
(
    [1] => 1
    [2] => 0
    [3] => 2
    [4] => 1
    [5] => 1
    [6] => 0
    [7] => 0
)
См в песочнице: https://phpize.online/s/A8
1
10 / 9 / 5
Регистрация: 17.02.2016
Сообщений: 375
19.11.2024, 09:55  [ТС]
Цитата Сообщение от rr33rr Посмотреть сообщение
Покажите, что и как вы делаете? Результат чего и как выводите?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        $survey_response = [
            1 => 'Из детского сада',
            2 => 'Реклама в интернете',
            3 => 'Видео на экранах города',
            4 => 'Афиша в магазине или торговом центре',
            5 => 'Баннер в городе',
            6 => 'Посоветовали друзья или знакомые',
            7 => 'Были ранее на шоу, идем еще раз!',
          ];
           
        foreach ($survey_response as $key => $value) {
            $responses[$key] = 0;
        }
        
        foreach ($order_survey as $value) {
            $i = $value['survey_response'];
            $responses[$i]++;
        }
        
        foreach ($survey_response as $key => $value) {
        if ($responses[$key])
            $result_survey = "$survey_response[$key] — $responses[$key]<br>\n";
        }
PHP
1
print_r ($responses);
Всё как и у вас.
Изображения
 
0
Заблокирован
19.11.2024, 10:06
Цитата Сообщение от Fruit Посмотреть сообщение
Всё как и у вас.
Нет. Код rr33rr, выдает вот такой результат:
Code
1
2
3
4
5
Из детского сада — 1
Видео на экранах города — 2
Афиша в магазине или торговом центре — 1
Баннер в городе — 1
Array ( [1] => 1 [2] => 0 [3] => 2 [4] => 1 [5] => 1 [6] => 0 [7] => 0 )
Надо просто тупа скопировать и вставить.
1
926 / 549 / 291
Регистрация: 07.11.2022
Сообщений: 899
19.11.2024, 10:30
Лучший ответ Сообщение было отмечено Fruit как решение

Решение

Цитата Сообщение от Fruit Посмотреть сообщение
Всё как и у вас.
Не все.
У вас отличается 22 строка.
PHP
22
$result_survey = "$survey_response[$key] — $responses[$key]<br>\n";
вместо
PHP
22
echo "$survey_response[$key] — $responses[$key]<br>\n";
в оригинале.

Естественно на каждом этапе цикла у вас перезаписывается значение $result_survey и в конце цикла там окажется информация только про последнюю строку.

Если вы хотите весь вывод поместить в одну переменную (строку $result_survey), то можно сделать так:
PHP
20
21
22
23
24
        $result_survey = "";
        foreach ($survey_response as $key => $value) {
          if ($responses[$key])
            $result_survey .= "$survey_response[$key] — $responses[$key]<br>\n";
        }
Тогда информация будет добавляться, а не перезаписываться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2024, 10:30
Помогаю со студенческими работами здесь

Вычислить значение заданной функци на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов вычислений значений функ
Вычислить значение заданной функции y=f(x) на данном интервале с заданным шагом. Осуществить вывод значений аргумента и результатов...

SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице
Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством user.id = phones.user_id привести 2 разных...

Сравнение значений и вывод результатов
Всем поклон. Прошу помочь, не могу разобраться, что я делаю не верно. Хочу подготовить файл шаблон для сравнения данных из 2...

Вычислить значение заданной функции. Осуществить вывод значений аргумента и результатов вычислений значений функции в за
Вычислить значение заданной функции. Осуществить вывод значений аргумента и результатов вычислений значений функции в заданном диапазоне с...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru