Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak szybko dostać się do wartości wielowymiarowej tablicy z poziomu metody obiektu, Tablica istnieje w obiekcie i można się dostać do niej przez metodę
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Załóżmy, że mamy wielowymiarową tablicę, której struktury do końca nie znamy. Korzysta z niej kilka innych obiektów, mogą one wstawiać do tej tablicy wartości pod odpowiednimi indeksami, ale i też je wyciągać (zakładamy, że nigdy nikt sobie na wzajem danych nie nadpisze). Ale ta tablica ma być "zarządzalna" przez osobny obiekt. To znaczy, by pobrać jakąś wartość trzeba użyć metody $object->get('index'), a żeby wstawić $object->set('index', 2). Nigdy nie ma bezpośredniego dostępu do tej tablicy.

Jak wykonać metody pobierania i wstawiania do tablicy, by były możliwie jak najszybsze (operacje na stringach to jakaś masakra w PHP ;/) i żeby można było dostać się do tablicy wgłąb, na przykład: $table['index1']['index2']['index3']?

Wymyśliłem, by na poczekaniu tworzyć funkcję anonimową (create_function), której prześlemy całą tablicę, a w stringu stworzymy już indeks do pobrania:

  1. $index = "['".implode("']['", explode('.', $index))."']";
  2. $function = create_function('$array', 'return (isset($array'.$index.') ? $array'.$index.' : null);');
  3. return $function($array);


I teraz, jeśli chcemy pozyskać jakąś wartość to w parametrze metody podajemy ciąg znaków: 'index1.index2.index3'. Ale nie jest to zbyt szybkie.

Macie może inne pomysły na rozwiązanie tego problemu?

Ten post edytował adbacz 9.07.2014, 23:26:52
Go to the top of the page
+Quote Post

Posty w temacie
- adbacz   Jak szybko dostać się do wartości wielowymiarowej tablicy z poziomu metody obiektu   9.07.2014, 23:26:38
- - SmokAnalog   Najprościej, choć niezbyt elegancko, wytłumić błęd...   10.07.2014, 09:42:12
- - by_ikar   Można do tego dojść na kilka sposbów, można używać...   10.07.2014, 09:59:37
- - SmokAnalog   Pytanie tylko po co tak kombinować. Moim zdaniem t...   10.07.2014, 10:05:31
- - by_ikar   Widzisz, operator wytłumienia nie powinno się nigd...   10.07.2014, 10:44:58
|- - SmokAnalog   Cytat(by_ikar @ 10.07.2014, 11:44:58 ...   10.07.2014, 10:55:17
- - nospor   CytatJesteś pewien, że handlery błędów się wywołuj...   10.07.2014, 10:59:36
- - SmokAnalog   Pytanie tylko kto zapisuje w pliku błędy typu noti...   10.07.2014, 11:07:25
- - nospor   CytatPytanie tylko kto zapisuje w pliku błędy typu...   10.07.2014, 11:12:32
- - by_ikar   Nie trzeba być fanatykiem żadnego rozwiązania. Ale...   10.07.2014, 11:19:02
- - Crozin   Możesz skorzystać z całkiem przyzwoitego komponent...   10.07.2014, 11:20:27
- - Sephirus   Trochę OT ale moim zdaniem całe to zadanie nie ma ...   10.07.2014, 11:21:59
- - adbacz   Ma to być prosta klasa, która będzie czymś na zasa...   13.07.2014, 09:30:29
- - Pyton_000   Nie przejmowałbym się tym. Co do rozwiązania @by_i...   13.07.2014, 10:16:35
- - adbacz   Mógłbym, ale co jeśli zwrócona wartość będzie stri...   13.07.2014, 10:23:17
- - Pyton_000   Może być czymkolwiek. Po prostu w metodzie robisz ...   13.07.2014, 11:38:45
- - Crozin   Kilka rozwiązań: 1. Zacznij od wczytania wielowym...   13.07.2014, 15:13:33
- - adbacz   Jak już pisałem wczesniej. Aplikacja używa kilku p...   13.07.2014, 19:01:27
- - Pyton_000   Tak,ujednolicić pliki konfiguracyjne   13.07.2014, 19:16:01


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: 26.09.2025 - 23:22