Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] jak zwrócić nazwę zmiennej
kyob
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 16.03.2003

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


$var = "abc'

jakim polecenim moge zwrocic nazwe zmiennej $var, aby wyniku otrzymac 'var'


--------------------
.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


http://www.php.net/language.variables.variable


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
devnul
post
Post #3





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


@dr_bonzo: nie wiem po co odsyłasz do manuala - skoro tam tego nie znajdzie - odpowiedz jest jedna - nie da się

Ten post edytował devnul 26.03.2007, 15:30:20


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
bili.pl
post
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.11.2006

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


Nie ma bezpośredniego sposobu, ale być może da się jakoś to zrobić. Napisz coś więcej, skąd masz to $var. Ta zmenna pochodzi z jakiegoś nieznanego na etapie programowania kodu wykonywanego np. eval'em?


--------------------
dmx512
Go to the top of the page
+Quote Post
Michal2000
post
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

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


W php o ile się nie mylę, jest dostępna tablica wszystkich zmiennych, i można za pomocą array_search to sprawdzić, ale nie pamiętam czy taka tablica też istniała do wszystkich zmiennych czy tylko $_GET, $_POST, $_FILE, $_SERVER, $_COOKIE, $_REQUIRE i jeszcze jakies tam.

O już pamiętam, w $GLOBALS były wszystkie zmienne. Wiec DA SIĘ.

Czyli kod wyglądał by tak:

  1. <?php
  2. $NAZWA_ZMIENNEJ = array_search('WARTOSC_ZMIENNEJ', $GLOBALS);
  3. ?>


Ten post edytował Michal2000 26.03.2007, 16:26:42


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
devnul
post
Post #6





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


nie ma tablicy ze wszystkimi zmiennymi - jest tablica $GLOBALS w której są zmienne globalne przechowywane - ale to też nie jest sposób na wyciągniecie nazwy zmiennej - bo niby jak?


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
Michal2000
post
Post #7





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

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


Cytat(devnul @ 26.03.2007, 17:25:04 ) *
nie ma tablicy ze wszystkimi zmiennymi - jest tablica $GLOBALS w której są zmienne globalne przechowywane - ale to też nie jest sposób na wyciągniecie nazwy zmiennej - bo niby jak?

Jest tablica ze wszystkimi zmiennymi.
W $GLOBALS sa przechowywane wszystkie zmienne, nie tylko globalne, nazwa ta wzięła sie z tond, ze dostęp do tej tablicy można uzyskać wszędzie, bo tablica jest globalna.

Ten post edytował Michal2000 26.03.2007, 16:29:37


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
devnul
post
Post #8





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


  1. <?php
  2.  
  3. $var="test";
  4.  
  5. function asd(){
  6. $ala="ma kota";
  7. }
  8. asd();
  9. print_r($GLOBALS);
  10. ?>


znajdz w wyniku zmienną $ala a przyznam Ci racje

definicja z manuala
Cytat
$GLOBALS
Zawiera referencje do każdej ze zmiennych aktualnie dostępnych w zasięgu globalnym skryptu. Kluczami tablicy są nazwy zmiennych globalnych.


Ten post edytował devnul 26.03.2007, 16:38:06


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
wolguy
post
Post #9





Grupa: Zarejestrowani
Postów: 219
Pomógł: 10
Dołączył: 9.01.2005

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


@kyob: napisz coś więcej o swoim problemie, a na pewno znajdziemy rozwiązanie
Go to the top of the page
+Quote Post
empathon
post
Post #10





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


  1. <?php
  2. $var = "nazwa";
  3. $nazwa = "tresc";
  4. echo $$var; // Daje => "tresc"
  5. ?>


O coś takiego Ci chodzi ?


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
Michal2000
post
Post #11





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

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


Cytat(devnul @ 26.03.2007, 17:35:38 ) *
  1. <?php
  2.  
  3. $var="test";
  4.  
  5. function asd(){
  6. $ala="ma kota";
  7. }
  8. asd();
  9. print_r($GLOBALS);
  10. ?>


znajdz w wyniku zmienną $ala a przyznam Ci racje

definicja z manuala


Masz racje, faktycznie głupio to napisałem, zapomniałem pomyślec drugi raz smile.gif Ale mimo wszystko raczej trudno zeby tam była zmienna lokalna smile.gif
Źle sobie z innym językiem skojarzyłem w którym domyślne każda zmienna jest lokalna a globalne to tylko te, poprzedzone słowem kluczowym GLOBAL, mój błąd smile.gif A w PHP domyślnie każda zmienna poza tymi w funkcjach i klasach... jest globalna.

Ten post edytował Michal2000 26.03.2007, 16:49:43


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
devnul
post
Post #12





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


@empathon: przeczytaj uważnie, kyob napisał wyraźnie
Cytat
$var = "abc'

jakim polecenim moge zwrocic nazwe zmiennej $var, aby wyniku otrzymac 'var'
że chce otrzymać nazwę zmiennej a nie jej wartość to o czym piszesz zasugerował dr_bonzo odsyłając do manuala.

Ten post edytował devnul 26.03.2007, 16:55:05


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
Michal2000
post
Post #13





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

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


No cóż, nadal uważam, że ten kod będzie działa tak, jak chcesz:

  1. <?php
  2. $var = 'KOTEK';
  3.  
  4. echo array_search('KOTEK', $GLOBALS);
  5. //ECHO wyświetla wartość var 
  6. ?>


Chyba że źle rozumiem twój problem.

Ten post edytował Michal2000 26.03.2007, 17:01:44


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
devnul
post
Post #14





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


  1. <?php
  2. $var_bad = 'KOTEK';
  3. $var = 'KOTEK';
  4.  
  5. echo array_search('KOTEK', $GLOBALS);
  6. //ECHO wyświetla wartość var 
  7. ?>


a teraz nie będzie działał - czyli Twój kod jest nieprzewidywalny - no i nie można go użyć wewnątrz funkcji

ale przyszła mi na myśl taka konstrukcja
  1. <?php
  2. $test="aaaaaa"; //zmienna której nazwe chcemy wyciągnąć
  3. $tmp=get_defined_vars();
  4. end($tmp);
  5. echo key($tmp);
  6. ?>

i działa równo z wnętrza jak i z zewnątrz funkcji - warunek jest taki że trzeba ten kod przeklejac w całości ilekroc chcemy wyciągnąć nazwe jakiejs zmiennej


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
empathon
post
Post #15





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


Cytat(devnul @ 26.03.2007, 17:54:32 ) *
@empathon: przeczytaj uważnie, kyob napisał wyraźnie
że chce otrzymać nazwę zmiennej a nie jej wartość to o czym piszesz zasugerował dr_bonzo odsyłając do manuala.

Powiedz jaki jest sens poznania nazwy zmiennej której znamy nazwę?

No proszę bardzo...
  1. <?php
  2. $var = 'abc';
  3. $nazwa = preg_replace( "*.(w+)*", "1", '$var');
  4. echo $nazwa;
  5. ?>


ech... kod na phpfi http://phpfi.com/220149

Ten post edytował empathon 26.03.2007, 17:18:38


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
Michal2000
post
Post #16





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

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


Cytat
a teraz nie będzie działał - czyli Twój kod jest nieprzewidywalny - no i nie można go użyć wewnątrz funkcji


Cóż, to był tylko uproszczony przykład.


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
devnul
post
Post #17





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


Cytat
Powiedz jaki jest sens poznania nazwy zmiennej której znamy nazwę?

@empathon: osobiście uznaje to za nieprzydatne - ale zawsze może to posłużyć do (hmmm...) debugowania kodu lub czort wie czego - nie ja zakładałem temat - więc nie mnie pytaj na co mi to

Cytat
Cóż, to był tylko uproszczony przykład.

@Michal2000: tego już nie napisałeś, a wręcz przeciwnie:
Cytat
nadal uważam, że ten kod będzie działa tak, jak chcesz


//ADD: @Michal2000: ok może troche sie czepiam - sory - już nie będe winksmiley.jpg

Ten post edytował devnul 26.03.2007, 17:46:39


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
Michal2000
post
Post #18





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 19.07.2006

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


Cytat(devnul @ 26.03.2007, 18:19:40 ) *
@Michal2000: tego już nie napisałeś, a wręcz przeciwnie:

A nie działa? Poprawienie kodu, aby działał tak, jak ktoś chce to kwestia paru chwil, wiec przy czymś tak banalnym to nawet nie zwracałem uwagi na takie szczegóły, jak by był z tym problem, to można to obrazu poprawić. Czepiasz się słówek smile.gif


--------------------
"Wszystko powinno być zrealizowane tak prosto, jak to tylko możliwe, i ani trochę bardziej prosto" Albert Einstein
Go to the top of the page
+Quote Post
kyob
post
Post #19





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 16.03.2003

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


doprecyzuje pytanie na prostym przykladzie

  1. <?
  2. if(isset($_POST['Submit'])) {
  3. // tutaj to magiczne polecenie/funkcja, ktora zwroci nazwe zmiennej (nie wartosc)
  4. // przyklad: 
  5. // echo magiczne_polecenie($_POST['Traktor']); 
  6. // w wyniku chce otrzymac: Traktor
  7. }else{
  8. ?>
  9. <form method="post" action="index.php">
  10. <input name="Traktor" type="text" />
  11. <input type="submit" name="Submit"/>
  12. </form>
  13. <? } ?>


Ten post edytował kyob 27.03.2007, 13:26:19


--------------------
.
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie mozna bylo tak od razu?
http://pl.php.net/manual/pl/function.extract.php

ale jesli ci chodzi tylko o traktor, to nie czemu nie zrobisz tak:
  1. <?php
  2. $Traktor = $_POST['Traktor'];
  3. ?>

?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 12:08