За последние 24 часа нас посетили 23658 программистов и 1596 роботов. Сейчас ищут 800 программистов ...

сижу, туплю. стыднооо

Тема в разделе "PHP для новичков", создана пользователем rewuxiin, 29 сен 2016.

  1. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    в общем дело обстоит так:
    имеем массив сущностей - приаттачил
    в итоге нужно получить массив в котором:
    ключ это "parent_id", а значение это массив из всех значений "status" которые относятся к "parent_id"
    по сути где-то здесь вместо присвоения нужно создать массив в который складывать значения, что бы они не заменялись новыми из-за присваивания - но мозг отказывается предлагать варианты

    PHP:
    1. $parentArray = array();
    2.   foreach ($array as $value){
    3.    $parentArray[$value->getParentId()] = $value->getParentId() ;
    4.   }
    п.с. хотя может быть я зря загоняюсь и задачу можно решить проще т.к. основная задача такова - получить количество каждого статуса относящегося к parent_id
    т.е.
    HTML:
    1. id   parent_id   status
    2. 1    1               101
    3. 2    1               102
    4. 3    1               101
    итого: parent_id имеет статус 101 в количестве = 2, статус 102 в количестве = 1
     

    Вложения:

  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Нужно построить дерево?
     
  3. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    не. просто нужна статистика.
    Parent со статусом = 101 столько-то шт.,
    parent со статусом = 105 столько-то шт.
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тогда можно в sql запросе через функцию count(`status`) посчитать
     
  5. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    Я уже думал над этим - тогда получается нужно сделать много запросов.
    если у меня parent_id 10 штук и статусов 10, хотя как одних так и других может стать больше
    10*10 = 100 count запросов
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ещё группировка есть, может проще было книгу по mysql почитать?
     
    rewuxiin нравится это.
  7. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    книгу... я доки посмотрел, в myadmin попробовал, подумал и не решил чем все же это обработать.
    вот послушаю твой опыт - обращу внимание больше на базу))
     
  8. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Если БД, то как сказал denis01 - группировка. Если нет, то:
    PHP:
    1. $parentArray = [];
    2.   foreach ($array as $value) {
    3.     if(isset($parentArray[$value->getParentId()][__статус__]) {
    4.        $parentArray[$value->getParentId()][__статус__]++;
    5.     } else {
    6.        $parentArray[$value->getParentId()][__статус__] = 1;
    7.     }
    8.   }
     
    denis01 и rewuxiin нравится это.
  9. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @rewuxiin создай две таблицы в бд. В одной храни id статуса и собственный id.
    Во второй свои статусы, а у них собственный id (Статуса), и id родителя из таблицы статусов.
    И join в помощь.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1. $parentArray[$value->getParentId()][] = $value->getParentId() ;
    --- Добавлено ---
    забыл добавить
    --- Добавлено ---
     
    rewuxiin нравится это.
  11. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    не, в данном случае смысла нет хранить статусы в отдельно таблице
     
  12. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @rewuxiin, тебе же подсказали: group by `status`. Погугли, посмотри.
    @igordata, он же не хочет дерево строить. У него parent что-то ещё значит :)
     
  13. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    mkramer, я вижу все что подсказали и за это поставил спасибо всем кто подсказал
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так дерева и не будет. будет плоский список со всеми детьми всех родителей, какие есть по их айдишникам.