Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Generisanje imena varijabli

[es] :: PHP :: Generisanje imena varijabli

[ Pregleda: 1120 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 2788
*.4.EUnet.yu

Jabber: grakic@jabber.org
Sajt: blog.goranrakic.com


Profil

icon Generisanje imena varijabli27.07.2003. u 03:29

Naime imam po sve jednostavan ali trenutno za mene ne rešiv problem. Kada imate varijablu $jedan, vi joj mozete pristupiti i preko ${'jedan'}. E sada meni to treba, ali za niz. Imam _POST i _GET nizove i ja hoću da prenesem ime niza i ime indeksa kao parametre. Ukoliko stavim ${'_GET'}[$var], to radi, dok ako stavim ${'_'.$niz}[$var], to ne radi - dobijem poruku da je _GET nedefinisana varijabla. Zašto?
http://sr.openoffice.org — slobodan kancelarijski paket, zamena za MS Office, na srpskom i engleskom, legalno bez troškova licenciranja
27.07.2003. u 03:29 

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Generisanje imena varijabli27.07.2003. u 04:30
nije me mrzelo, probao sam i kod mene radi bez problema

Code:
<?php

$_TEST['aaa'] = "nesto prvo";
$_TEST['bbb'] = "drugo hocemo";
 
$glavna = "TEST";
$druga = "bbb";

print ${'_'.$glavna}[$druga]; // to radi bez problema

// rezultat:
// drugo hocemo

?>


PHP/4.0.6
PHP/4.2.3
27.07.2003. u 04:30 

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Generisanje imena varijabli27.07.2003. u 04:34
radi i ovo
Code:
<?php
$glavna = "SERVER";
$druga = "SCRIPT_FILENAME";
print ${'_'.$glavna}[$druga];
?>


kao i _GET
27.07.2003. u 04:34 

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 2788
*.6.EUnet.yu

Jabber: grakic@jabber.org
Sajt: blog.goranrakic.com


Profil

icon Re: Generisanje imena varijabli27.07.2003. u 13:39
a ovako?

Code:

<?php

    $array = 'GET';
    $key = 'a';
        
    // ovo radi...
    echo('<hr>1. Direktno...<br>');    
        echo('Niz: '.$array.'<br>');
    echo('Kljuc: '.$key.'<br>');
    echo ('Vrednost: '.${'_'.$array}[$key].'<br>');

      function readvalue($key,$array)  {
                echo('<hr>2. Iz funkcije...<br>');
                echo('Niz: '.$array.'<br>');
        echo('Kljuc: '.$key.'<br>');
        echo('Vrednost: '.${'_'.$array}[$key].'<br>');
        
        // i ovo radi...
        echo('<hr>3. Direktan pristup iz funkcije (jeste globalna varijabla)<br>');
        echo('Vrednost: '.$_GET[a].'<br>');
      } 

      // ovo nece
      readvalue('a','GET');
      
?>


Generisanje imena radi van funkcije, direktan pristup radi u funkciji i van funkcije, dok generisanje imena u funkciji ne radi.
http://sr.openoffice.org — slobodan kancelarijski paket, zamena za MS Office, na srpskom i engleskom, legalno bez troškova licenciranja
27.07.2003. u 13:39 

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1967
*.red.bezeqint.net

ICQ: 82327428


Profil

icon Re: Generisanje imena varijabli27.07.2003. u 18:54
Eee našao si bug u PHPu :Đ
Malo sam se poigrao ovim zato što me zanimalo i izgleda da je problem sa super promenljivim u funkcijama...

Kód sam za sebe govori:

Code:
<pre>
<?
ini_set('display_startup_errors',1);
ini_set ('error_reporting', E_ALL);
$array = 'GET';
$key = 'a';
    
// ovo radi...
echo "<hr>1. Direktno...
Niz: $array
Kljuc: $key
Vrednost:". ${'_'.$array}[$key];
function readvalue($array,$key)  {
         $_A['a']='Working';
         echo "<hr>2. Iz funkcije...
         Niz: $array
         Kljuc: $key
         U arrajy: ".${'_'.$array}[$key];

readvalue('A','a'); #Obicna promenljiva i radi
readvalue('GET','a'); #super globalna promenljiva i ne radi
highlight_file('echo.php');
   
?>


demo (4.3.2RC4)

~Say FiQ
27.07.2003. u 18:54 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


Profil

icon Re: Generisanje imena varijabli28.07.2003. u 01:04
koristi global da bi deklarisao da je $_GET globalna promenjiva. (da, deluje zbunjujuće, i naravno da je hack, ali radi ;)

mrzi me da izmišljam novi primer. evo confiq-ovog

Code:

<pre>
<?php
ini_set('display_startup_errors',1);
ini_set ('error_reporting', E_ALL);
$array = 'GET';
$key = 'a';
    
// ovo radi...
echo "<hr>1. Direktno...
Niz: $array
Kljuc: $key
Vrednost:". ${'_'.$array}[$key];
function readvalue($array,$key)  {
    $global="_$array";
    global $$global;
         $_A['a']='Working';
         echo "<hr>2. Iz funkcije...
         Niz: $array
         Kljuc: $key
         U arrajy: ".${'_'.$array}[$key];

readvalue('A','a'); #Obicna promenljiva i radi
readvalue('GET','a'); #super globalna promenljiva i ne radi
highlight_file('echo.php');
   
?>


btw, ovo je moglo da se reši i sa eval() i sa $GLOBALS, i...

a ustpu, umesto prosleđivanja imena niza, zar nisi lakše mogao da proslediš sam niz ;) ili još bolje kao referencu...
28.07.2003. u 01:04 

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 2788
*.17.EUnet.yu

Jabber: grakic@jabber.org
Sajt: blog.goranrakic.com


Profil

icon Re: Generisanje imena varijabli28.07.2003. u 01:09
evo neka moja 1500. poruka na forumu bude:

ovo sa referencom je odlična ideja (ma setio bih se ja, ali...), a sa imenom niza izgleda kriptičnije. šalu na stranu, nemam direktnu funkciju već i delove imena dobijam kao povratnu vrednost drugih metoda unutar istog objekta te mi ovakva izgranja baš treba. Rešio sam problem sa switch konstrukcijom.



[Ovu poruku je menjao Goran Rakić dana 28.07.2003. u 03:33 GMT]
http://sr.openoffice.org — slobodan kancelarijski paket, zamena za MS Office, na srpskom i engleskom, legalno bez troškova licenciranja
Prikačeni fajlovi
28.07.2003. u 01:09 

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Generisanje imena varijabli28.07.2003. u 02:02
Citat:
Goran Rakić
evo neka moja 1500. poruka

HOLA, cetitam

28.07.2003. u 02:02 

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1967
*.red.bezeqint.net

ICQ: 82327428


Profil

icon Re: Generisanje imena varijabli28.07.2003. u 19:16
Citat:
-zombie-:
btw, ovo je moglo da se reši i sa eval() i sa $GLOBALS, i...



Hmmm, mislim da problem nije bio kako da se napravi nego zašto ne radi. Ipak bi ovo trebalo da bude mali bug u PHP-u pošto super-globalna bi naime trebalo da bude supernija od obične globalne (bar po meni).
Ajde nek neko postuje ovaj primer na news://news.php.net pa da vidimo šta oni misle?

~Say FiQ
28.07.2003. u 19:16 

[es] :: PHP :: Generisanje imena varijabli

[ Pregleda: 1120 | Odgovora: 8 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.