[rozwiazane!]użycie wartości zmiennej1,jako nazwy zmie2[php]

0

Witam.. czy jest mozliwe takie cos?:
zalozmy ze mam tablice

samochody
czesci

i czy jest mozliwe zeby skrypt wykonał mi jakas petle uzywajac tej tablicy, ktora podam w zmiennej?
np.

$uzyj='samochody';

wiem, juz niektorzy łapią za klawiature zeby mi napisac o switch/case, albo o zwyklym if, albo o czyms takim.. ale to jest z tej logiki niewykonalne.. nie jestem w stanie opisac mojego projektu w 100% tutaj, wiem tylko ze taki myk ułatwi mi duzo roboty, oraz "uprzejrzyści" kod :)
dziekuje z gory za pomoc
~dzek69

0
$nazwa = "Tekst";
$zmienna="nazwa"
$$zmienna = "Tekst2";
echo $nazwa; 
0

a nie mozesz po prostu:

$samochody = array();
$czesci = array();

$tablica_w_petli = $samochody;
foreach($tablica_w_petli as $element)
...

?

0

ewentualnie mało optymalnie:

$zmienna='tekst';
$wartosc='cosik';
eval('$'.$zmienna.'=\''.$cosik.'\;'';
0

hmm, pomyslałem na Waszymi odpowiedziami i sie calkiem pogubiłem :P
okej, moze tak, najprosciej jak sie da :P

$nazwa='sam';

i teraz tak jakby wykona mi się wykona mi się

echo $sam;

a gdyby

$nazwa='cze';

to wykona sie

echo $cze;

tylko NIE UZYWAJAC switch itd.. bo to jest zbyt skomplikowane zeby tego uzyc, to tak jakby mozna bylo jako $nazwa podstawic co się komu podoba, i wtedy wyswietli sie zmienna o nazwie podanej w $nazwa..

0

echo $$nazwa

0

dzieki nav, działa, ale gdyby $cze bylo tablicą? o takie coś:

$nazwa='cze';
$cze = Array('Marcin', 'Daniel', 'Magda', 'Paulina');

echo $$nazwa[0];

to mi wywala blad.. i nie wiem jak to podac..

0

$tmp=$nazwa[0];
$$tmp
Po prostu rozwiązanie $$nazwa ma większy priorytet niż operator[]. Może daloby rade też $($nazwa[0]) ale php może się przyczepić.

0

no ta, tylko ze pole tablicy tez jest zmiennie wybierane..
o tak jak tu

$nazwa='cze';
$cze = Array('Marcin', 'Daniel', 'Magda', 'Paulina');
echo $$nazwa[0];
echo $$nazwa[1];
echo $$nazwa[2];

I jak mozesz to zastosuj sie nazewnictwem do tego przykładu, bo te dwa dolary i tak mi mozg mieszaja :P
drugie rozwiazanie próbowałem, nie dziala ..

0

$nazwa='cze';
$cze = Array('Marcin', 'Daniel', 'Magda', 'Paulina');
$tmp=$$nazwa;
echo $tmp[0];
echo $tmp[1];
echo $tmp[2];

0

może po prostu poczytaj u źródła:
http://pl.php.net/manual/pl/language.variables.variable.php

0

no nav, jakbym miał jak to bym Ci piwo postawił :D
dzięki wielkie za pomoc, wszystko działa jak należy.. teraz kod jest przejrzysty, odchudzony i w ogole cacy :D

tomkiewicz - czytałem, ale zwariować można..a z tymi tablicami w komentarzach ludzie tez maja problemy..

0

to jest wszystko proste, np:

echo $cze;

to to samo co:

echo ${'cze'};

a zamiast ciągu 'cze' możesz użyć jakiejś zmiennej, np:

echo ${$zmienna};

jednak w tej postaci można ominąć klamerki i zostaje:

echo $$zmienna;

proste

tak samo kod:

$nazwa='cze';
$cze = Array('Marcin', 'Daniel', 'Magda', 'Paulina');
$tmp=$$nazwa;
echo $tmp[0];
echo $tmp[1];
echo $tmp[2];

można zapisać jako:

$nazwa='cze';
$cze = Array('Marcin', 'Daniel', 'Magda', 'Paulina');
echo ${$nazwa}[0];
echo ${$nazwa}[1];
echo ${$nazwa}[2];

co w/g mnie trochę czytelniej wygląda

co ciekawe w klamerkach można podać funkcję czy dowolną instrukcję byleby wyszedł z tego ciąg znaków nazwy zmiennej. np:

function zwroc(){
  return 'cze';
}
$cze = Array('Marcin', 'Daniel', 'Magda', 'Paulina');
echo ${zwroc()}[0];
echo ${zwroc()}[1];
echo ${zwroc()}[2];

jednak jeśli potrzebujesz takich kombinacji to znaczy że coś generalnie namieszałeś w kodzie

// hmm, gdyby jeszcze dodać nawiasy na końcu to możnaby wywoływać funkcję o tej nazwie:

function zwroc(){
  return 'cze';
}

function foo(){
  return 'Wywołano funkcję foo <br />';
}

function bar(){
  return 'Wywołano funkcję bar <br />';
}

$cze = Array('foo', 'bar');

echo ${zwroc()}[0]();
echo ${zwroc()}[1]();

i zrodził mi się pomysł na fajną metodę obfuskacji kodu ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1