Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tablica dodanie wartości i posortowanie
Forum PHP.pl > Forum > Przedszkole
kielich
Witam serdecznie,
Bardzo prosiłbym o pomoc jak mógłbym posortować tablicę aby nie dostać dubli tylko jedno pytanie z dodaną ilością odpowiedzi. Pracuję nad tym od 3H i nie umiem sobie z tym poradzić. Moja tablica wygląda następująco.

  1. 0 =>
  2. 'odp' => string 'cztery' (length=6)
  3. 1 =>
  4. 'ilosc' => int 1
  5. 2 =>
  6. 'odp' => string 'pi-' (length=3)
  7. 3 =>
  8. 'ilosc' => int 0
  9. 4 =>
  10. 'odp' => string 'sze-' (length=4)
  11. 5 =>
  12. 'ilosc' => int 0
  13. 6 =>
  14. 'odp' => string 'jeden' (length=5)
  15. 7 =>
  16. 'ilosc' => int 1
  17. 8 =>
  18. 'odp' => string 'dwa' (length=3)
  19. 9 =>
  20. 'ilosc' => int 0
  21. 10 =>
  22. 'odp' => string 'trzy' (length=4)
  23. 11 =>
  24. 'ilosc' => int 0
  25. 12 =>
  26. 'odp' => string 'cztery' (length=6)
  27. 13 =>
  28. 'ilosc' => int 1
  29. 14 =>
  30. 'odp' => string 'pi-' (length=3)
  31. 15 =>
  32. 'ilosc' => int 0
  33. 16 =>
  34. 'odp' => string 'sze-' (length=4)
  35. 17 =>
  36. 'ilosc' => int 0
  37. 18 =>
  38. 'odp' => string 'jeden' (length=5)
  39. 19 =>
  40. 'ilosc' => int 1
  41. 20 =>
  42. 'odp' => string 'dwa' (length=3)
  43. 21 =>
  44. 'ilosc' => int 0
  45. 22 =>
  46. 'odp' => string 'trzy' (length=4)
  47. 23 =>
  48. 'ilosc' => int 0


Czyli jak widać po prostu tab jest x2. A ja chciałbym ją mieć w takiej postaci

  1. 0 =>
  2. 'odp' => string 'cztery' (length=6)
  3. 1 =>
  4. 'ilosc' => int 2
  5. 2 =>
  6. 'odp' => string 'pi-' (length=3)
  7. 3 =>
  8. 'ilosc' => int 0
  9. 4 =>
  10. 'odp' => string 'sze-' (length=4)
  11. 5 =>
  12. 'ilosc' => int 0
  13. 6 =>
  14. 'odp' => string 'jeden' (length=5)
  15. 7 =>
  16. 'ilosc' => int 2
  17. 8 =>
  18. 'odp' => string 'dwa' (length=3)
  19. 9 =>
  20. 'ilosc' => int 0
  21. 10 =>
  22. 'odp' => string 'trzy' (length=4)
  23. 11 =>
  24. 'ilosc' => int 0
  25.  
  26.  

z góry dzięuje za pomoc
nospor
No ale może pokaż jak generujesz tę tablicę bo błąd zapewne jest tam.
kielich
bład nie leży w generowaniu tablicy , chyba że jest jakiś inny, bardziej wydajnieszy i lepszy ?
  1. foreach($questions as $mpmm) {
  2. $queSer = unserialize($mpmm->statistics);
  3.  
  4. foreach($queSer as $serializeQue => $qu){
  5. // if(in_array($serializeQue, $isS)){
  6. // $addS[]['odp'] = $serializeQue;
  7. // $addS[]['ilosc'] = $qu;
  8. // }else{
  9. // $isS[] = $serializeQue;
  10. //
  11. // }
  12. $addS[]['odp'] = $serializeQue;
  13. $addS[]['ilosc'] = $qu;
  14. }
  15.  
  16. }
nospor
Cytat(nospor)
No ale może pokaż jak generujesz tę tablicę bo błąd zapewne jest tam.

Cytat(kielich)
bład nie leży w generowaniu tablicy

Skoro dostajesz złą tablicę, to chyba oczywiste, że błąd leży w jej generowaniu.... Dobra, na dziś mam dosyć osób co to wiedzą lepiej.... po co więc na to forum przychodzą?
kielich
Po to że nie wiedzą wszystkiego, to raz a dwa mogę uzyskać lepszy pomysł od innych czasem nie zawsze bardziej doświadczonych, ale nie o to chodzi. Po prostu poprsiłem o pomoc.
nospor
A ja ci udzieliłem wskazówki co jest przyczyną, na co ty, że to napewno nie to, podczas gdy to właśnie na pewno to.... źle generujesz tablicę i to tu masz szukać rozwiązania problemu, a nie w jakimś późniejszym sortowaniu i usuwaniu duplikatów. Tak też można, oczywiście, ale czemu nie poprawić źródła problemu zamiast jego objawów?
kielich
Ok w takim razie, możesz mi powiedzieć jak mógłbym to zrobić aby dostać oczekiwany wynik.
zmienna $queSer = unserialize($mpmm->statistics); daj mi wartość

  1. 'cztery' => int 1
  2. 'pi-' => int 0
  3. 'sze-' => int 0
  4.  
  5. 'jeden' => int 1
  6. 'dwa' => int 0
  7. 'trzy' => int 0
  8.  
  9. 'cztery' => int 1
  10. 'pi-' => int 0
  11. 'sze-' => int 0
  12.  
  13. 'jeden' => int 1
  14. 'dwa' => int 0
  15. 'trzy' => int 0
  16.  


z

  1. foreach($questions as $mpmm) {
  2. $queSer = unserialize($mpmm->statistics);
  3.  
  4. var_dump($queSer);
  5. }
nospor
Sprawa jest stosunkowo prosta. Ale ja swoje stanowisko wyraziłem w swoim drugim poście tegoż tematu.

ALe nie martw się, skoro już wiemy gdzie jest błąd, na pewno znajdzie się ktoś kto to rozwiąże smile.gif
kielich
nospor - Dziękuję mimo wszystko.
markonix
Ogólnie struktura tablicy którą chcesz stworzyć jest mało logiczna.
Powstała tablica powinna być tablicą (listą) tablic (bądź obiektów) o strukturze:
['odp']
['ilosc']
gdzie kluczem (jeśli nie ma jakiegoś ID pytania) powinna być inkrementowana liczba ($i).
Inkrementacja raz na obrót pętli. Zostawiając pusty nawias [] tworzysz każdorazowo nowy indeks.
kielich
Dzięki, lecz to mi nic nie mówi co mógłbym przełożyć na praktyczny kod. ;(
_Borys_
How to sum values of the array of the same key
Trzecia odpowiedź na zsumowanie twojego $queSer.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.