Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kategoryzwonie po danym statusie i numerze
Bondar91
post 17.06.2019, 08:31:28
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 16.01.2014

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


Witam, nie wiem jak rozwiązać pewien problem, mam sobie tablicę składającą się ze zmiennych podanych niżej. Jak widac jest to identyfikator oraz status. Ten sam Identyfiktator może występować kilka razy. Nie mogę wpaść na pomysł , jak to kategoryzować, chodzi o to, że jak mam taki sam identyfiktor kilka razy, to musze jeden konkretny zliczyć po STATUSIE resztę odrzucić , mianowicie tutaj mamy statusy takie jak TEST i TEST2, dla rekordu 3034 chciałbym tylko zliczyć status TEST2, dodatkowo mam u sibie dwie tablice o nazwach danej kategori czyli test i test2 , wrzucając rekord do tablicy test2 majacy status TEST2 , nie może on już się znaleźć w tablicy o nazwie test mimo , że ten rekord posiada takie statusy. Czy ktoś mógłby pomoć i nakierować smile.gif
  1. ["s_id"]=>
  2. array(4) {
  3. [0]=>
  4. string(11) "1397"
  5. [1]=>
  6. string(11) "3034"
  7. [2]=>
  8. string(11) "3034"
  9. [3]=>
  10. string(11) "3034"
  11. }
  12. ["STATUS"]=>
  13. array(50) {
  14. [0]=>
  15. string(6) "TEST"
  16. [1]=>
  17. string(6) "TEST"
  18. [2]=>
  19. string(6) "TEST2"
  20. [3]=>
  21. string(6) "TEST"
  22. }


Ten post edytował Bondar91 17.06.2019, 08:33:01
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2019, 10:26:50
Post #2





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Może podaj jeszcze tablicę jaką oczekujesz.
Go to the top of the page
+Quote Post
Bondar91
post 17.06.2019, 10:31:14
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 16.01.2014

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


Wystarczy mi z tego przykładu co podałem zwrócic:

tutaj wszykie rekrody które maja statusy TEST
tab_test = array(1397)

tutaj wszykie rekrody które maja statusy TEST2
tab_test2 = array(3034)
Go to the top of the page
+Quote Post
Pyton_000
post 17.06.2019, 10:45:50
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Obie tablice zawsze mają tyle samo wartości?

Jeśli tak to lecisz foreach po jednej i pakujesz do nowej tablicy:

Cytat
$dante[$status][] = $id;
Go to the top of the page
+Quote Post
Bondar91
post 17.06.2019, 11:09:35
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 16.01.2014

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


Dzięki, dostałem taką tablicę , i sytuacja z indetyfikatorem 3034 jest następująca występuje 4 razy o statusie TEST i raz TEST3, tutaj potrzebowałbym usuwać ten identyfikator z tablicy TEST i zliczać go tylko w tablicy o statusie TEST3, gydż jest to status ważniejszy, tak samo by było w sytuacji gdyby ten rekord znajdował sie w statusie TEST2 , to ważneijszy byłby status TEST3 , wieć ze statusu TEST2 musiałbym ten rekord usuwac.
  1. ["TEST"]=>
  2. array(6) {
  3. [0]=>
  4. string(11) "1397"
  5. [1]=>
  6. string(11) "3034"
  7. [2]=>
  8. string(11) "3034"
  9. [3]=>
  10. string(11) "3034"
  11. [4]=>
  12. string(11) "3034"
  13. [5]=>
  14. string(11) "2324"
  15. }
  16. ["TEST2"]=>
  17. array(1) {
  18. [0]=>
  19. string(11) "1203"
  20. }
  21. ["TEST3"]=>
  22. array(6) {
  23. [0]=>
  24. string(11) "2671"
  25. [1]=>
  26. string(11) "3657"
  27. [2]=>
  28. string(11) "4597"
  29. [3]=>
  30. string(11) "7055"
  31. [4]=>
  32. string(11) "3034"
  33. [5]=>
  34. string(11) "3845"
  35. }


Ten post edytował Bondar91 17.06.2019, 11:09:56
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2019, 11:18:28
Post #6





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Z manuala


  1.  
  2. $array = [
  3. 's_id' => [1397, 3034, 1397, 3034,1397],
  4. 'status' => []
  5. ];
  6. $my_value = 1397;
  7. $filtered_array = array_filter($array['s_id],
  8. function ($element) use ($my_value) {
  9. return ($element == $my_value); }
  10. );
  11. print_r($filtered_array);


Go to the top of the page
+Quote Post
Pyton_000
post 17.06.2019, 11:36:33
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Ja zrobiłbym tablicę statusów z wagami od najwyższej do najniższej np:

Kod
test3 => 10
test2 => 5
test => 1


Potem iterował po tej tablicy a potem wew po tablicy wynikowej czyli:

Kod
foreach $wagi:
    foreach $wynikowa[$waga]:


Sprawdzasz sobie czy istnieje id już przefiltrowane jeśli nie to odkładasz gdzieś. a potem jeśli już istnieje to w kolejnych filtrach usuwasz te wartości.
Go to the top of the page
+Quote Post
Bondar91
post 17.06.2019, 13:12:56
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 16.01.2014

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


@Tomplus dzięki, jednak nie o to chodziło, to co napisałeś faktycznie usuwa dany element ale całkowicie , więc tutaj się nie nada.
@Pyton_000 również dzięki może pokombinuje z tym co napisałeś, chociaż tych statusów jest z 44 i zapomniałem dodac bo niektóre z tych statusów bedą miały taką samą wagę , więc kolejna rzecz dochodzi. Sorki też za to ze nie wszytko pisze na raz.
Go to the top of the page
+Quote Post
Tomplus
post 17.06.2019, 13:28:23
Post #9





Grupa: Zarejestrowani
Postów: 1 828
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


  1. forach($array['status'] as $k => $v) {
  2. $status[$v][] = ['id' => $array['sid'][$k], 'waga' => $array['waga'][$k] ] ;
  3. }
Go to the top of the page
+Quote Post
Bondar91
post 18.06.2019, 13:13:58
Post #10





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 16.01.2014

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


Dzięki za pomoc ,otrzymałem teraz następującą tablicę. Czym wyższa waga dla danego rekordu, to reszta rekordów z tym samym s_id zostaje nie brana pod uwagę, pożniej to zliczam w sensie do tych 4 statsuów licze unikalną ilość rekordów bez dubli. Ttutaj nadal mam problem jak z takiej tablicy mogę sprawdzać i usuwać rekordy, które mają niższą wagę i występują w kilku statusach.
  1. array(4) {
  2. ["AFTHRS"]=>
  3. array(6) {
  4. [0]=>
  5. array(2) {
  6. ["s_id"]=>
  7. string(4) "1397"
  8. ["waga"]=>
  9. int(20)
  10. }
  11. [1]=>
  12. array(2) {
  13. ["s_id"]=>
  14. string(4) "3034"
  15. ["waga"]=>
  16. int(20)
  17. }
  18. [2]=>
  19. array(2) {
  20. ["s_id"]=>
  21. string(4) "3034"
  22. ["waga"]=>
  23. int(20)
  24. }
  25. [3]=>
  26. array(2) {
  27. ["s_id"]=>
  28. string(4) "3034"
  29. ["waga"]=>
  30. int(20)
  31. }
  32. [4]=>
  33. array(2) {
  34. ["s_id"]=>
  35. string(4) "3034"
  36. ["waga"]=>
  37. int(20)
  38. }
  39. [5]=>
  40. array(2) {
  41. ["s_id"]=>
  42. string(4) "2324"
  43. ["waga"]=>
  44. int(20)
  45. }
  46. }
  47. ["TEST"]=>
  48. array(1) {
  49. [0]=>
  50. array(2) {
  51. ["s_id"]=>
  52. string(4) "1203"
  53. ["waga"]=>
  54. NULL
  55. }
  56. }
  57. ["REZCEN"]=>
  58. array(6) {
  59. [0]=>
  60. array(2) {
  61. ["s_id"]=>
  62. string(4) "671"
  63. ["waga"]=>
  64. int(30)
  65. }
  66. [1]=>
  67. array(2) {
  68. ["s_id"]=>
  69. string(4) "3657"
  70. ["waga"]=>
  71. int(30)
  72. }
  73. [2]=>
  74. array(2) {
  75. ["s_id"]=>
  76. string(4) "4597"
  77. ["waga"]=>
  78. int(30)
  79. }
  80. [3]=>
  81. array(2) {
  82. ["s_id"]=>
  83. string(4) "7055"
  84. ["waga"]=>
  85. int(30)
  86. }
  87. [4]=>
  88. array(2) {
  89. ["s_id"]=>
  90. string(4) "1919"
  91. ["waga"]=>
  92. int(30)
  93. }
  94. [5]=>
  95. array(2) {
  96. ["s_id"]=>
  97. string(4) "8845"
  98. ["waga"]=>
  99. int(30)
  100. }
  101. }
  102. ["NOWE"]=>
  103. array(9) {
  104. [0]=>
  105. array(2) {
  106. ["s_id"]=>
  107. string(4) "9812"
  108. ["waga"]=>
  109. int(40)
  110. }
  111. [1]=>
  112. array(2) {
  113. ["s_id"]=>
  114. string(4) "5279"
  115. ["waga"]=>
  116. int(40)
  117. }
  118. [2]=>
  119. array(2) {
  120. ["s_id"]=>
  121. string(4) "3005"
  122. ["waga"]=>
  123. int(40)
  124. }
  125. [3]=>
  126. array(2) {
  127. ["s_id"]=>
  128. string(4) "3121"
  129. ["waga"]=>
  130. int(40)
  131. }
  132. [4]=>
  133. array(2) {
  134. ["s_id"]=>
  135. string(4) "5742"
  136. ["waga"]=>
  137. int(40)
  138. }
  139. [5]=>
  140. array(2) {
  141. ["s_id"]=>
  142. string(4) "1203"
  143. ["waga"]=>
  144. int(40)
  145. }
  146. [6]=>
  147. array(2) {
  148. ["s_id"]=>
  149. string(4) "3625"
  150. ["waga"]=>
  151. int(40)
  152. }
  153. [7]=>
  154. array(2) {
  155. ["s_id"]=>
  156. string(4) "3034"
  157. ["waga"]=>
  158. int(40)
  159. }
  160. }


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: 28.03.2024 - 11:44