wolguy
8.01.2008, 20:57:09
Mój problem:
mam w zmiennej ustawioną nazwę zmiennej i klucza (kluczy), do którego chcę uzyskać dostęp. W moim przypadku indeks klucza musi być zapisany w zmiennej bo jest generowany przez inny kod i nierzadko generowany jest indeks klucza z tablicy wielowymiarowej.
<?php
$var[0] = 'jakas wartosc';
$nazwa_zmiennej = 'var[0]';
?>
Proszę o pomoc.
czachor
8.01.2008, 21:08:52
Hm. Opisałeś sytuację, ale nie napisałeś, jaki masz problem.
Jeżeli $var[0] zawiera nazwę zmiennej, to potem możesz mieć dostęp do niej przez ${$var[0]}. Ale w sumie nie wiem, czy o to chodzi.
wolguy
8.01.2008, 21:14:20
Kompilator zwraca błąd: Undefined variable: var[0] in D:\Htdocs\text.php on line 7
czachor: $var[0] dałem dla przykładu, aby do niej uzyskać dostęp. Nazwa tej zmiennej (do której chcę uzyskać dostęp) jest zapisana w zmiennej $nazwa_zmiennej.
masteron: gdyby o to chodziło, napisałbym na forum "Przedszkole"
czachor
8.01.2008, 21:28:45
Hm. To chyba nie do końca rozumiem, o co Ci chodzi. Bo w takim razie ${$nazwa_zmiennej} też nie?
A może spróbuj coś z eval()?
wolguy
8.01.2008, 21:41:48
Problem tkwi w tym, że indeks klucza jest zapisany w zmiennej - o tym nie ma mowy o manualu. Gdyby nie to, oczywiście by działało. Eval działa, ale jest trochę niewygodny.
Moim zdaniem zmienne zmienne powinno się traktować jako ciekawostke, nie jest to najlepsze rozwiązanie bo zaciemnia raczej kod...
bez zmiennych zmiennych można się żyć... ja ich jeszcze nie musiałem stosować...
a co do Twojego przypadku nie możesz w nazwie używać indeksów, tam może być tylko nazwa zmiennej do której chcesz dotrzeć...
jeśli w $nazwa_zmiennej przechowujesz również indeks to powinieneś go wyjąć stamtąd, np.
$nazwa_zmiennej = 'var[0]'; => (jakieś operacje z których wynika) => $indeks = 0;
=> $nazwa_zmiennej = 'var';
i wtedy
$$nazwa_zmiennej[$indeks];
webdice
8.01.2008, 21:53:59
Nie wiem czy dobrze zrozumiałem:
<?php
$array = array ('pierwszy' => 1, 'drugi' => 2
);
$index = 'drugi';
?>
Coś w ten deseń?
wolguy
8.01.2008, 22:07:12
@zimi: indeksu klucza nie mogę wyciągnąc poza string i dopisać go na końcu bo nie wiem, ile tych indesków będzie - raz może być indeks z tablicy jednowymiarowej a za innym razem indeksy z tablicy np. trójwymiarowej, czyli raz bym musiał używać
$$nazwazmiennej[klucz1] a raz $$nazwazmiennej[klucz1][klucz2][klucz3].
<?php
$var[0] = 'jakas wartosc';
$var[1][3][2] = 'inna wartosc';
$nazwa_zmiennej = 'var[1][3][2]';
?>
domyślam się że ma się tam znajdować więcej indeksów
nie mniej: Moim zdaniem zmienne zmienne powinno się traktować jako ciekawostke
a zatem myślę że powinieneś przemyśleć strukturę danych z jakiej w swoim skrypcie korzystasz
czachor
8.01.2008, 22:31:32
Musisz rozbić ciąg na nazwę zmiennej i rekordy. Z
manuala:
Cytat
Aby używać zmiennych zmiennych jako tablic, trzeba rozwiązać pewną niejasność. Mianowicie, jeśli napiszesz $$a[1], parser musi wiedzieć, czy chesz użyć $a[1] jako nazwy zmiennej, czy $$a jako nazwy tablicy, której rekord [1] cię interesuje. W tym przypadku należy zastosować odrębną składnię: ${$a[1]} dla pierwszego przypadku a ${$a}[1] dla drugiego.
Albo eval()...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.