[php] funkcja do szukania w tablicy |
[php] funkcja do szukania w tablicy |
29.06.2015, 22:18:35
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.06.2015 Ostrzeżenie: (0%) |
mam taka funkcje do wyszukiwania w tablicy, tablica wyglada mniej wiecej jak ponizej,
funkcja dziala prawidlowo, problem jest w tym że tablica jest bardzo duza, ma kilkaset tysiecy indeksów i dziala to wszystko bardzo wolno czy da sie to zrobic w jakis szybszy sposob niz ja to zrobilem
Kod Array
( [0] => Array ( [numer] => 2345 [kolor] => zielony ) [1] => Array ( [numer] => 7554 [kolor] => bialy ) Ten post edytował adam45 29.06.2015, 22:20:55 |
|
|
29.06.2015, 22:50:46
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 27 Dołączył: 5.10.2013 Ostrzeżenie: (0%) |
|
|
|
29.06.2015, 22:51:39
Post
#3
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) |
Czy możesz zmodyfikować tablicę? Jeśli numer jest unikalny, to zrób z niej tablicę [2345 => 'zielony', 7554 => 'biały'] i problem załatwiony (przedmówca mnie uprzedził ). A jeśli nie, to ciężko będzie to przyspieszyć. Przerób to na bazę danych, choćby SQLite w :memory: i szukaj zapytaniami.
Dodam jeszcze garść pomysłów od innych, porób testy, może coś będzie bardziej wydajne: http://stackoverflow.com/questions/6661530...al-array-search Ten post edytował kreatiff 29.06.2015, 22:54:35 |
|
|
29.06.2015, 22:59:47
Post
#4
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) |
Jak masz PHP w wersji co najmniej 5.5.0, to możesz pominąć if. -------------------- Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
30.06.2015, 08:21:00
Post
#5
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 27 Dołączył: 5.10.2013 Ostrzeżenie: (0%) |
Tak w ogóle, to do takich rzeczy używa się baz danych. Wtedy wszelkie tego typu operacje są bardzo łatwe i szybkie, nie trzeba bawić się w funkcje i szukanie.
|
|
|
30.06.2015, 08:34:30
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) |
|
|
|
30.06.2015, 08:42:47
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
A co Wy żeście się z tą BD tak uczepili. Koleś może dostaje tablice z API albo z gotowego pliku czy coś.
|
|
|
3.07.2015, 15:27:31
Post
#8
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) |
A co Wy żeście się z tą BD tak uczepili. Koleś może dostaje tablice z API albo z gotowego pliku czy coś. Racja. Ale jeżeli operacja nie jest wykonywana często a same dane nie zajmują wiele to może cacheować to w SLQu czy też na czas trwanai skryptu tworzyć tymczasową tabelę. Może akurat w tym przypadku nie będzie to opłacalne ale zostawia furtkę na ewentualną przyszłą rozbudowę. |
|
|
5.07.2015, 21:01:44
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.06.2015 Ostrzeżenie: (0%) |
jak sie zawsze okazuje najprostrze rozwiązania są najlepsze, ja niestety zawsze wymyslam cos skomplikowanego
zrobienie indeksow z numerow i pozniej odwolanie sie do ich wartosci najlepiej sie sprawdzilo z kilku dziesieciu minut czas skrocił sie do niecałej sekundy Kod [2345 => 'zielony', 7554 => 'bialy'] testowalem tez to, ale nie za bardzo poprawilo to wydajnowsc wzgledem teo co juz mialem Kod function wyszukaj($tablica, $numer) { return $tablica[array_search($numer, array_column($tablica, 'numer'))]['kolor']; nie zawsze jest mozliwosc zrobienia indeksow z jakis tam danych, w moim przypadku akurat bylo to mozliwe dzieki wszystkim za sugestie |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 07:26 |