Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Łączenie wartości tablicy
lustfingers
post 19.10.2020, 20:30:10
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 5
Dołączył: 18.03.2015

Ostrzeżenie: (0%)
-----


Witajcie mam tablicę typu:

  1. array(4) {
  2. [0]=>
  3. array(3) {
  4. ["id"]=> "1"
  5. ["color"]=> "red"
  6. ["size"]=> "S"
  7. [1]=>
  8. array(3) {
  9. ["id"]=> "1"
  10. ["color"]=> "red"
  11. ["size"]=> "M"
  12. [2]=>
  13. array(3) {
  14. ["id"]=> "2"
  15. ["color"]=> "red"
  16. ["size"]=> "S"
  17. [3]=>
  18. array(3) {
  19. ["id"]=> "2"
  20. ["color"]=> "red"
  21. ["size"]=> "M"
  22. }


Jak widać pewne elementy tablicy się powtarzają dlatego chciałbym ją tak połączyć aby elementy wspólne się nie dublowały tylko elementy różne mają się połączyć z rozdzielaczem w formie przecinka, czyli finalnie chciałbym uzyskać taki efekt:

  1. array(2) {
  2. [0]=>
  3. array(3) {
  4. ["id"]=> "1"
  5. ["color"]=> "red"
  6. ["size"]=> "S, M"
  7. [1]=>
  8. array(3) {
  9. ["id"]=> "2"
  10. ["color"]=> "red"
  11. ["size"]=> "S, M"
  12. }


Czy są jakieś wbudowane funkcje które mi to ułatwią? Jak to najlepiej zrobić?
Go to the top of the page
+Quote Post
vokiel
post 19.10.2020, 20:34:27
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Raczej nie użyjesz tu nic w stylu array_merge, musisz więc przeiterować tablicę i dla każdego elementu dodać sprawdzanie.


--------------------
Go to the top of the page
+Quote Post
lustfingers
post 19.10.2020, 21:04:16
Post #3





Grupa: Zarejestrowani
Postów: 99
Pomógł: 5
Dołączył: 18.03.2015

Ostrzeżenie: (0%)
-----


Dziękuje za odpowiedź, jeszcze jakbyś mógł podpowiedzieć pod jakim hasłem szukać było by mi z pewnością prościej. Staram się samemu rozwiązywać problemy ale powroty do kodowania są ciężkie szczególnie gdy zakończyło się przygodę na poziomie początkujący to po 3 latach przerwy okazuje się że jestem poniżej tego poziomu biggrin.gif
Go to the top of the page
+Quote Post
SmokAnalog
post 19.10.2020, 21:20:57
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Zapodaj sobie array_reduce (zakładam, że Twoja tablica jest w $data):

  1. $data,
  2. function (array $carry, array $item): array {
  3. $key = json_encode([$item['id'], $item['color']]);
  4. if (!isset($carry[$key])) {
  5. $carry[$key] = array_merge($item, ['size' => []]);
  6. }
  7.  
  8. array_push($carry[$key]['size'], $item['size']);
  9.  
  10. return $carry;
  11. },
  12. []
  13. ));


Ten post edytował SmokAnalog 19.10.2020, 21:21:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 16:40