Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Grupowanie elementów tablicy
sunpietro
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 26
Dołączył: 23.01.2009
Skąd: eZ Systems

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


Witam,
ostatnio męczę się nad grupowaniem elementów tablicy. W trakcie działania programu zostaje utworzona tablica:
Kod
Array (
    [0] => Array (
        [?projekt_nazwa] => Projekt nr 1
        [?projekt_opis] => <p>opis projektu</p>
        [?projekt_obraz] => 8246ee1a339805dc58198b9a08763950.png
    )
    [1] => Array (
        [?projekt_nazwa] => Projekt nr 1
        [?projekt_opis] => <p>opis projektu</p>
        [?projekt_obraz] => fcdb6e8a59d27792679f450cdd0f903a.png
    )
    [2] => Array (
        [?projekt_nazwa] => Projekt nr 1
        [?projekt_opis] => <p>opis projektu</p>
        [?projekt_obraz] => d660d08c57fb6b4c13388c1972e1574a.png
    )
    [3] => Array (
        [?projekt_nazwa] => Projekt nr 1
        [?projekt_opis] => <p>opis projektu</p>
        [?projekt_obraz] => d7ecc42d59bb1082f78420d764855d69.png
    )
    [4] => Array (
        [?projekt_nazwa] => War 1
        [?projekt_opis] => <p>Testowy projekt</p>
        [?projekt_obraz] => ecc258c8e9cf4b3cd62eaddf71b03b47.jpeg
    )
    [5] => Array (
        [?projekt_nazwa] => War 1
        [?projekt_opis] => <p>Testowy projekt</p>
        [?projekt_obraz] => b843abd4d45c08d3f3f6cf92c46410bd.jpg
    )
    [6] => Array (
        [?projekt_nazwa] => 1
        [?projekt_opis] =>
        [?projekt_obraz] =>
    )
    [7] => Array (
        [?projekt_nazwa] =>
        [?projekt_opis] => <p>Witam!</p>
        [?projekt_obraz] =>
    )
    [8] => Array (
        [?projekt_nazwa] => dfgd
        [?projekt_opis] => <p>fdd</p>
        [?projekt_obraz] =>
    )
    [9] => Array (
        [?projekt_nazwa] => Kreator
        [?projekt_opis] => <p>Projekty</p>
        [?projekt_obraz] =>
    )
    [10] => Array (
        [?projekt_nazwa] => Testowy
        [?projekt_opis] => <p>k,j</p>
        [?projekt_obraz] =>
    )
    [11] => Array (
        [?projekt_nazwa] => projekt 2
        [?projekt_opis] => <p>opissssssss drugi</p>
        [?projekt_obraz] =>
    )
)

Mój problem polega na tym, aby grupować elementy o tych samych atrybutach [?projekt_nazwa] , aby powstało coś w stylu:
Kod
Array (
    [0] => Array (
        [?projekt_nazwa] => Projekt nr 1
        [?projekt_opis] => <p>opis projektu</p>
        [?projekt_obraz] => 8246ee1a339805dc58198b9a08763950.png
        [?projekt_obraz] => fcdb6e8a59d27792679f450cdd0f903a.png
        [?projekt_obraz] => d660d08c57fb6b4c13388c1972e1574a.png
        [?projekt_obraz] => d7ecc42d59bb1082f78420d764855d69.png
    )
    [4] => Array (
        [?projekt_nazwa] => War 1
        [?projekt_opis] => <p>Testowy projekt</p>
        [?projekt_obraz] => ecc258c8e9cf4b3cd62eaddf71b03b47.jpeg
        [?projekt_obraz] => b843abd4d45c08d3f3f6cf92c46410bd.jpg
    )
    [8] => Array (
        [?projekt_nazwa] => dfgd
        [?projekt_opis] => <p>fdd</p>
        [?projekt_obraz] =>
    )
    [9] => Array (
        [?projekt_nazwa] => Kreator
        [?projekt_opis] => <p>Projekty</p>
        [?projekt_obraz] =>
    )
    [10] => Array (
        [?projekt_nazwa] => Testowy
        [?projekt_opis] => <p>k,j</p>
        [?projekt_obraz] =>
    )
    [11] => Array (
        [?projekt_nazwa] => projekt 2
        [?projekt_opis] => <p>opissssssss drugi</p>
        [?projekt_obraz] =>
    )
)

Prosiłbym o wskazówki, w którym kierunku mam podążać aby osiągnąć pożądany efekt.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bleblok
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 6
Dołączył: 15.09.2009

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


Pojawia się podstawowy problem: indeksy w tablicy asocjacyjnej nie mogą się powtarzać.
Obejdę trochę ten problem.

Zakładam, że pierwsza tablica to powiedzmy $tab1.

Tworzysz tablice indeksów - $indeksy.

Lecisz po kolei elementy tablicy $tab1 (może być foreach) i indeksujesz sobie klucze po których grupujesz sprawdzając czy wcześniej nie było już takiego indeksu.
Jeśli był, to pakujesz obrazek do tabeli wyjściowej o indeksie jaki wyciągniesz z $indeksy. Jeśli nie było to przepisujesz cały jeden element z $tab1 do $tab2.

  1. $indeksy = array();
  2. $tab2 = array();
  3. if (count($tab1))
  4. {
  5. foreach ($tab1 as $tab_i => $tab_v)
  6. {
  7. if (isset($indeksy[$tab_v['?projekt_nazwa']]))
  8. {
  9. $tab2[$indeksy[$tab_v['?projekt_nazwa']]]['?projekt_obraz']][] = $tab_v['?projekt_obraz']
  10. }else
  11. {
  12. $tab2[$tab_i] = array();
  13. $tab2[$tab_i]['?projekt_nazwa']] = $tab_v['?projekt_nazwa'];
  14. $tab2[$tab_i]['?projekt_opis']] = $tab_v['?projekt_opis'];
  15. $tab2[$tab_i]['?projekt_obraz']] = array();
  16. $tab2[$tab_i]['?projekt_obraz']][] = $tab_v['?projekt_obraz']
  17. $indeksy[$tab_v['?projekt_nazwa']] = $tab_i;
  18. }
  19.  
  20. }
  21. }


Ten post edytował bleblok 12.02.2011, 18:05:36
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 20:56