За последние 24 часа нас посетили 18792 программиста и 1649 роботов. Сейчас ищут 863 программиста ...

работа с массивом объектов

Тема в разделе "Прочие вопросы по PHP", создана пользователем r26xd, 27 май 2013.

  1. r26xd

    r26xd Новичок

    С нами с:
    27 май 2013
    Сообщения:
    2
    Симпатии:
    0
    Добрый день!

    Есть проблема - не могу сообразить как нужным образом уменьшить кол-во элементов массива объектов полученных из БД.


    задача состоит в том, чтобы уменьшить массив объектов так, чтобы остались только объекты с уникальными в пределах $productParsedArray product_Code ("id" товара) , и с подсчитанными кол-вами product_Count

    Т.е., для product_Code = 222, итоговый объект нового массива $productParsedArray будет содержать свойства comingId = 10, product_Code = 222, и product_Count = 9 ( 2 + 7 )

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


    Код (Text):
    1.  
    2. // объекты товара из таблицы приходов
    3. $comingProducts = array(
    4. obj1->comingId = 10 // id прихода
    5.      ->product_Code = 222 // id товара
    6.      ->product_Count = 2 // кол-во штук товара
    7. ,obj2->comingId = 10
    8.      ->product_Code = 333
    9.      ->product_Count = 4
    10. ,obj3->comingId = 10
    11.      ->product_Code = 222
    12.      ->product_Count = 7
    13.  
    14. [ .. и так далее ..  ]
    15.  );
    16.  
    17. //Последнее, что пытался сделать, это нечто подобное:
    18.  
    19.  
    20. $productParsedArray = $productUnique = array();
    21.  
    22. foreach( $comingProducts as $product )
    23. {
    24. //    $productUnique[] = $product->product_Code;
    25. //    $productParsed = $product;
    26. //
    27. //    foreach( $productUnique as $unique )
    28. //    {
    29. //      if( $product->product_Code == $unique )
    30. //      {
    31. //        foreach( $productParsedArray as $productParsedObject )
    32. //        {
    33. //          if( $productParsedObject->product_Code == $unique )
    34. //          {
    35. //            $productParsedObject->product_Count += $product->product_Count;
    36. //            $productParsedArray[] = $productParsedObject;
    37. //            $product = null;
    38. //            break;
    39. //          }
    40. //        }
    41. //
    42. //      }
    43. //
    44. //    }
    45. }

    но в итоге только запутался и так и не получилось сделать задуманное

    Подскажите грамотный способ для подобной работы с объектами?..
     
  2. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    попробуйте решить эту задачу средствами sql. группировка по comingId и product_Code, и суммирование по product_Count
     
  3. r26xd

    r26xd Новичок

    С нами с:
    27 май 2013
    Сообщения:
    2
    Симпатии:
    0
    Помогло, спасибо!