Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] funkcja do szukania w tablicy
adam45
post
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

  1. function wyszukaj($tablica, $numer)
  2. {
  3.  
  4. foreach($tablica as $nazwa_kolumny=>$wartosc) {
  5.  
  6. if($wartosc["numer"] == $numer)
  7. {
  8. $tmp = $wartosc["kolor"];
  9. break;
  10. }
  11. }
  12.  
  13. return $tmp;
  14.  
  15. }


Kod
Array
(
    [0] => Array
        (
            [numer] => 2345
            [kolor] => zielony
        )

    [1] => Array
        (
            [numer] => 7554
            [kolor] => bialy
        )


Ten post edytował adam45 29.06.2015, 22:20:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adam45
post
Post #2





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


Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 18:09