Strona główna » Webdesign » [PHP] Zmienne zmienne w funkcjach

[PHP] Zmienne zmienne w funkcjach

01 sierpnia 2005, 17:37:18
Podczas dynamicznego generowania formularzy na podstawie informacji z bazy danych często przydatne jest wprowadzenie ukrytej tablicy, która zawiera nazwy interesujących nas zmiennych wykorzystanych w tymże formularzu. Przykładowo może to być coś takiego:
<select name="cat24">
  bla bla bla
</select>
<input type="hidden" name="varnames[]" value="cat24" />
Po wysłaniu takiego formularza wystarczy w prosty sposób przejrzeć zawartość zmiennej $varnames i można "zaopiekować się" potrzebnymi danymi np. w taki sposób:
$catsinfo[$dbrow['cat_id']] = array ('label' => $dbrow['label'],
  'crits' => $crits, 'selection' => ${$varnames[count ($catsinfo)]});
Oczywiście ktos mógłby powiedzieć po co wymyślać ukryte zmienne jak można wykorzystać np. $_POST i też ma się dostęp do wszystkich zmiennych. Jednak nie zawsze się tak da, gdyż można potrzebować informację na temat pewnego określonego zbioru zmiennych.

Pewien mały problem powstaje w przypadku, gdy powyższą linijkę będziemy chcieli użyć w funkcji. Jak wiadomo wewnątrz funkcji jeśli zmienne nie są zadeklarowane jako global to będą miały zasięg lokalny tylko wewnątrz ciała tej funkcji. Jeśli jesteśmy w stanie przewidzieć jakie zmienne chcemy wykorzystać to raczej nikt nie będzie zastanawiać się co zrobić z tym fantem. Co jednak ze zmiennymi zmiennymi? Ano to:
foreach ($varnames as $value)
    global $$value;
Otóż rozwiązanie jest w sumie banalne aczkolwiek w pierwszym momencie gdy pojawił mi się ten problem to chwilę musiałem pomyśleć, żeby wymyśleć ;)

Kategorie: Webdesign Trackback URL

Dodaj komentarz do “[PHP] Zmienne zmienne w funkcjach”

Jeszcze nie ma żadnych komentarzy. Twój może być pierwszy.


Formatowanie markdown włączone (składnia Markdown).

Przykłady: *em* | **strong** | [Opis linka](http://jogger.pl/) | > cytowana treść