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ć
["s_id"]=> http://www.php.net/array(4) { [0]=> string(11) "1397" [1]=> string(11) "3034" [2]=> string(11) "3034" [3]=> string(11) "3034" } ["STATUS"]=> http://www.php.net/array(50) { [0]=> string(6) "TEST" [1]=> string(6) "TEST" [2]=> string(6) "TEST2" [3]=> string(6) "TEST" }
Może podaj jeszcze tablicę jaką oczekujesz.
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)
Obie tablice zawsze mają tyle samo wartości?
Jeśli tak to lecisz foreach po jednej i pakujesz do nowej tablicy:
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.
["TEST"]=> http://www.php.net/array(6) { [0]=> string(11) "1397" [1]=> string(11) "3034" [2]=> string(11) "3034" [3]=> string(11) "3034" [4]=> string(11) "3034" [5]=> string(11) "2324" } ["TEST2"]=> http://www.php.net/array(1) { [0]=> string(11) "1203" } ["TEST3"]=> http://www.php.net/array(6) { [0]=> string(11) "2671" [1]=> string(11) "3657" [2]=> string(11) "4597" [3]=> string(11) "7055" [4]=> string(11) "3034" [5]=> string(11) "3845" }
Z manuala
$array = [ 's_id' => [1397, 3034, 1397, 3034,1397], 'status' => [] ]; $my_value = 1397; $filtered_array = http://www.php.net/array_filter($array['s_id], function ($element) use ($my_value) { return ($element == $my_value); } ); print_r($filtered_array);
Ja zrobiłbym tablicę statusów z wagami od najwyższej do najniższej np:
@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.
forach($array['status'] as $k => $v) { $status[$v][] = ['id' => $array['sid'][$k], 'waga' => $array['waga'][$k] ] ; }
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.
http://www.php.net/array(4) { ["AFTHRS"]=> http://www.php.net/array(6) { [0]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "1397" ["waga"]=> int(20) } [1]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3034" ["waga"]=> int(20) } [2]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3034" ["waga"]=> int(20) } [3]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3034" ["waga"]=> int(20) } [4]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3034" ["waga"]=> int(20) } [5]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "2324" ["waga"]=> int(20) } } ["TEST"]=> http://www.php.net/array(1) { [0]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "1203" ["waga"]=> NULL } } ["REZCEN"]=> http://www.php.net/array(6) { [0]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "671" ["waga"]=> int(30) } [1]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3657" ["waga"]=> int(30) } [2]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "4597" ["waga"]=> int(30) } [3]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "7055" ["waga"]=> int(30) } [4]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "1919" ["waga"]=> int(30) } [5]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "8845" ["waga"]=> int(30) } } ["NOWE"]=> http://www.php.net/array(9) { [0]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "9812" ["waga"]=> int(40) } [1]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "5279" ["waga"]=> int(40) } [2]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3005" ["waga"]=> int(40) } [3]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3121" ["waga"]=> int(40) } [4]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "5742" ["waga"]=> int(40) } [5]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "1203" ["waga"]=> int(40) } [6]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3625" ["waga"]=> int(40) } [7]=> http://www.php.net/array(2) { ["s_id"]=> string(4) "3034" ["waga"]=> int(40) } }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)