Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmienne zmienne
Forum PHP.pl > Forum > PHP
wolguy
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.
  1. <?php
  2. $var[0] = 'jakas wartosc';
  3.  
  4.  
  5. $nazwa_zmiennej = 'var[0]';
  6. echo $$nazwa_zmiennej;
  7. ?>

Proszę o pomoc.
czachor
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
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
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
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.
zimi
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
Nie wiem czy dobrze zrozumiałem:

  1. <?php
  2.  
  3. $array = array ('pierwszy' => 1, 'drugi' => 2);
  4.  
  5. $index = 'drugi';
  6.  
  7. print $array[$index];
  8.  
  9. ?>


Coś w ten deseń?
wolguy
@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].
  1. <?php
  2. $var[0] = 'jakas wartosc';
  3. $var[1][3][2] = 'inna wartosc';
  4.  
  5. $nazwa_zmiennej = 'var[1][3][2]';
  6.  
  7. echo $$nazwa_zmiennej;
  8. ?>
zimi
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.