За последние 24 часа нас посетил 10071 программист и 713 роботов. Сейчас ищут 199 программистов ...

Вывод результатов после обработки array_count_values

Тема в разделе "PHP для новичков", создана пользователем Dimog, 14 сен 2021 в 08:42.

  1. Dimog

    Dimog Новичок

    С нами с:
    3 авг 2021
    Сообщения:
    6
    Симпатии:
    0
    Доброго времени суток. Нужна ваша помощь.
    Стоит задача посчитать количество каждого значения в массиве и вывести на страницу. С подсчетом проблем нет. А вот с выводом проблемы. Необходимо вывести в "удобоваримом для пользователя виде"). Код такой
    Код (Text):
    1. $sth = $dbh->query("SELECT * FROM matrix WHERE id = 225");
    2. $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    3. foreach ($result as $data) {
    4. print_r (array_count_values($data));
    5. }
    Соответственно в итоге на странице выводится:
    Array ( [225] => 1 [3129] => 1 [0] => 5 [1] => 6 [2] => 4 ).
    Подскажите, как отобразить результат подсчета хотя бы так:
    id 225
    Номер 3129
    Количество значений "0" - 5
    Количество значений "1" - 6
    Количество значений "2" - 4
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.894
    Симпатии:
    555
    Адрес:
    Татарстан
    очень странная задача... или формулировка
    вы из таблицы берете значения всех полей... вам точно ВСЕ поля нужны - и подсчитывать сколько их
    приведите структуру таблицы? и попробуйте переформулировать задачу.. .скажите простым языком, забыв про (как вам кажется вот такое правильное решение ) объясните физический смысл? может это еще на стадии запроса делается....

    в целом - у вас видимо первое поле id, второе - номер, тогда как-то так будет
    PHP:
    1. foreach ($result as $data) {
    2. $id = $data[0];
    3. $num = $data[1];
    4. unset($v[0]);
    5. unset($v[1]);
    6. echo "id $id<br/>
    7. Номер $num";
    8. foreach (array_count_values($v) AS $key => $item) {
    9. echo 'Количество значений "'.$key.'" - '.$item,'<br/>';
    10. }
    11. }
    писал на коленке мб ошибки, но смысл должен быть понятен
     
  3. Dimog

    Dimog Новичок

    С нами с:
    3 авг 2021
    Сообщения:
    6
    Симпатии:
    0
    К сожалению не получилось. может что ни так сделал. В итоге, после полудневного мозгового штурма заработал такой вариант
    Код (Text):
    1. <?php
    2. $sth = $dbh->query("SELECT * FROM matrix WHERE id = 225");
    3. $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    4. foreach($result as $data){
    5. $id=$data['id'];
    6. $num=$data['num'];
    7. $count = array_count_values($data);
    8. echo $id,'<br>';
    9. echo $num,'<br>';
    10. echo $count[0],'<br>';
    11. echo $count[1],'<br>';
    12. echo $count[2],'<br>';
    13. }
    Я студент. Это задание препода на спецкурсе по веб разработке на пыхе. Он очень часто такие на превый взгляд нелогичные и забубенные задачи дает). Хотя, может в этом и есть смысл обучения - научить решать нестандартные задачи?)))

    Кстати, другой половине группы, на мой взгляд, повезло еще меньше. Он заставил их решать ту же задачу средствами MySql)
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.572
    Симпатии:
    1.088
    Адрес:
    там-сям
    на MySQL решается в два слова: "GROUP BY"
     
  5. Dimog

    Dimog Новичок

    С нами с:
    3 авг 2021
    Сообщения:
    6
    Симпатии:
    0
    Да и тут на самом деле не сложно). Просто нужно ЗНАТЬ). А когда не знаешь...
     
  6. don.bidon

    don.bidon Новичок

    С нами с:
    28 мар 2021
    Сообщения:
    270
    Симпатии:
    37
    с "GROUP BY" получилось, или продолжаете не знать?
     
  7. Dimog

    Dimog Новичок

    С нами с:
    3 авг 2021
    Сообщения:
    6
    Симпатии:
    0
    Не пробовал пока.