Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: $$ I Tablice
Forum PHP.pl > Forum > PHP
szafranek.net
Mam zmienną tekstową zawierającą nazwę elementu tablicy:
  1. <?php
  2. $nazwa = '$tab[0]';
  3. ?>


$tab przechowuje stringi:
  1. <?php
  2. $tab[0] = 'bla bla';
  3. ?>


Chciałbym je wyświetlić. Dlaczego nie działa mi coś takiego?

  1. <?php
  2. echo $$nazwa;
  3. ?>


Jeśli pozbędę się znaku $ z wartości przechowywanej w $nazwa, również nie działa. Ze skalarami nie ma problemów, konstrukcja $$ nie działa mi tylko z tablicami. Obszedłem to wyłuskując indeksy $tab z $nazwa za pomocą wyrażeń regularnych, ale chyba da się to zrobić bez armaty? winksmiley.jpg
ActivePlayer
1. Zawartosci tablicy echo raczej nie pokaze.
2. Wywal ten szit... zgadnij czemu tongue.gif
  1. <?php
  2. $nazwa = 'tab';
  3. ?>

3. print_r" title="Zobacz w manualu PHP" target="_manual
szafranek.net
No dobrze. A weźmy ciekawszy przypadek.

Niech $tab będzie talicą asocjacyjną:

  1. <?php
  2.  
  3. $tab['aaa'] = 'azx';
  4. $tab['bbb'] = 'zcb';
  5. $tab['ccc'] = 'erc';
  6.  
  7. ?>


A mój string zawiera coś takiego:

  1. <?php
  2.  
  3. $nazwa = '$tab[\"xxx\"]';
  4.  
  5. ?>


Problem polega na sprawdzeniu, czy w $tab rzeczywiście istnieje wartość z indeksem xxx.
Próbowałem czegoś takiego:

  1. <?php
  2.  
  3. if (isset($$nazwa)) {
  4. // costam
  5. }
  6.  
  7. ?>


Ale oczywiście nie działa. Da się to sprawdzić bez korzystania z wyrażeń regularnych i zabaw z substr()?
NuLL
A probowales z funkcja strlen" title="Zobacz w manualu PHP" target="_manualquestionmark.gif
Ive
heh... gdzies w kursie OOP kiedys czytalem ze jesli chcesz zrobic referencje tablicy to walisz to tak:
  1. <?
  2. $nazwa = &$tab;
  3. ?>

ale nie jestem pewien czy to dokladnie o to chodzi tongue.gif poza tym dawno w php nic wiekszego nie robilem wiec moge sie mylic ale sprawdz :]
NuLL
  1. <?php
  2.  
  3. $a=&$b;
  4.  
  5. ?>


Referencje pwoduja ze $a i $b odwoluja sie do tego samego miejscan w pamieci.
$a i $b wskazuja na ta sama zmienna.

To sa referencje exclamation.gif

Fajny ten kurs musail byc ale wole czytac manual czy coś.
Ive
kurs dostepny na php.pl [made by Naflein - czy jakos tak tongue.gif] =='
a oto cytat z niego:
Cytat
// przypomnijmy, jak wygląda tworzenie referencji do nie-obiektów np. tablic
$tablica = array(1 => 'jeden', 2 => 'dwa', 3 => 'trzy');
$tab = &$tablica; // tutaj musimy użyć znaku "&"

tym sie kierowalem tongue.gif moze to zle rozumiem albo cos... nie wiem

a tu dokladny link do rozdzialu kursu w ktorym jest ten kod:
Używanie obiektu, referencje
NuLL
Nie wiem moze na o to samo chodzi

Ale jak cos:

Referencje na php.net

EDIT: tO BYLO WYTLUMACZNIE TYLKO
rogrog
autor tematu ma na myśli zmienne zmienne (variable variables) a referencje to coś zupełnie innego
szafranek.net
Cytat(rogrog @ 2004-09-03 15:14:43)
autor tematu ma na myśli zmienne zmienne (variable variables) a referencje to coś zupełnie innego

Właśnie rolleyes.gif

Nieważne, rozwiązałem to za pomocą regexpów (skrypt CLI na potrzeby localhosta, więc nie ma problemów z wydajnością smile.gif ). Pytałem po prostu z czystej ciekawości, ale widzę że po prostu się nie da zrobić tego za pomocą kombinacji z $$.
DeyV
ale przecież można to zrobić znacznie prościej, przy pomocy eval " title="Zobacz w manualu PHP" target="_manual
  1. <?php
  2. $tab[&#092;"a\"] = 'wartosc';
  3.  
  4. $nazwa = '$tab[\"a\"]';
  5.  
  6. eval( '$t = '. $nazwa .';' ); 
  7. echo $t;
  8. ?>
szafranek.net
Tym samym główna nagroda trafia do DeyVa biggrin.gif
Dzięki.
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.