Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> $$ I Tablice
szafranek.net
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 20.03.2004

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


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


--------------------
dehumanization in progress
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


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

Ten post edytował ActivePlayer 2.09.2004, 22:44:55
Go to the top of the page
+Quote Post
szafranek.net
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 20.03.2004

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


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()?


--------------------
dehumanization in progress
Go to the top of the page
+Quote Post
NuLL
post
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


A probowales z funkcja strlen" title="Zobacz w manualu PHP" target="_manualquestionmark.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Ive
post
Post #5





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


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 :]

Ten post edytował Ive 3.09.2004, 14:05:21
Go to the top of the page
+Quote Post
NuLL
post
Post #6





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


  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ś.

Ten post edytował null 3.09.2004, 14:24:49


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Ive
post
Post #7





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


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
Go to the top of the page
+Quote Post
NuLL
post
Post #8





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Nie wiem moze na o to samo chodzi

Ale jak cos:

Referencje na php.net

EDIT: tO BYLO WYTLUMACZNIE TYLKO

Ten post edytował null 3.09.2004, 15:19:08


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
rogrog
post
Post #9





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


autor tematu ma na myśli zmienne zmienne (variable variables) a referencje to coś zupełnie innego


--------------------
Go to the top of the page
+Quote Post
szafranek.net
post
Post #10





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 20.03.2004

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


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 $$.


--------------------
dehumanization in progress
Go to the top of the page
+Quote Post
DeyV
post
Post #11





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




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. ?>


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
szafranek.net
post
Post #12





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 20.03.2004

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


Tym samym główna nagroda trafia do DeyVa biggrin.gif
Dzięki.

Ten post edytował szafranek.net 4.09.2004, 16:03:28


--------------------
dehumanization in progress
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 08:45