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

Generisanje imena varijabli

[es] :: PHP :: Generisanje imena varijabli

[ Pregleda: 2975 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Generisanje imena varijabli27.07.2003. u 03:29 - pre 251 meseci
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.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

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 - pre 251 meseci
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
 
Odgovor na temu

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 - pre 251 meseci
radi i ovo
Code:
<?php
$glavna = "SERVER";
$druga = "SCRIPT_FILENAME";
print ${'_'.$glavna}[$druga];
?>


kao i _GET
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Generisanje imena varijabli27.07.2003. u 13:39 - pre 251 meseci
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.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

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

ICQ: 82327428


+10 Profil

icon Re: Generisanje imena varijabli27.07.2003. u 18:54 - pre 251 meseci
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
 
Odgovor na temu

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

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

Sajt: localhost


+5 Profil

icon Re: Generisanje imena varijabli28.07.2003. u 01:04 - pre 251 meseci
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...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Generisanje imena varijabli28.07.2003. u 01:09 - pre 251 meseci
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.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
Prikačeni fajlovi
 
Odgovor na temu

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 - pre 251 meseci
Citat:
Goran Rakić
evo neka moja 1500. poruka

HOLA, cetitam

 
Odgovor na temu

CONFIQ
♫♪♥♪♫

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

ICQ: 82327428


+10 Profil

icon Re: Generisanje imena varijabli28.07.2003. u 19:16 - pre 251 meseci
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
 
Odgovor na temu

[es] :: PHP :: Generisanje imena varijabli

[ Pregleda: 2975 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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