Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Grupowanie tablicy
Cromwell
post 30.05.2012, 14:17:52
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


Mam tablicę, którą przepuszczam przez pętlę i wyciągam z niej jedną wartość.
Coś takiego:

  1. $list = '';
  2. foreach($data AS $d){
  3. $list .= $d->value;
  4. }


Liczba elementów w $data jest nieokreślona, może ich być bardzo dużo. Tak samo nie mogę określić $d->value - może przyjmować wiele różnych wartości.
Chciałbym pogrupować elementy z tablicy $data, grupując po $d->value.
Zastanawiałem się o zapisywaniu zamiast do stringa do arraya, a potem użyciu array_diff, jednak o ile to rozwiązanie sprawdzi się świetnie przy dwóch elementach, to przy większej liczbie (nieokreślonej), już nie bardzo.

$data to objekt, składający się z wielu objektów i tego nie mogę zmienić.

Go to the top of the page
+Quote Post
thek
post 30.05.2012, 14:48:52
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pytanie tylko co grupujesz? Czy lecąc przez obiekt $data grupujesz wszystkie elementy $d jeśli posiadają ten sam $d->value czy jakoś inaczej? W teorii bowiem zawsze możesz utworzyć sobie element tymczasowy i w petli go uzupełniać na pałę... Coś w stylu:
  1. $temp = array();
  2. foreach($data AS $d)
  3. {
  4. $temp[$d->value][] = $d;
  5. }
  6. var_dump($temp);

ale niebezpieczeństwem jest to, że nie wszystko może być kluczem tablicowym i w pewnych sytuacjach nawet nie zauważysz, że coś "gubisz" po drodze. Jeśli jesteś pewny iż brak będzie głupot, to takim podejściem utworzysz tablicę, której kluczami będą interesujące Cię $d->value i do których będzie przypisana tablica obiektów o tejże wartości.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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: 14.08.2025 - 11:41