Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Operacje na nazwach zmiennych
Forum PHP.pl > Forum > PHP
Less
Witam "Forumowiczów", cześć!

Mam taki podstawowy problem, piszę kodu sporo, ale niestety nie mam podstaw sad.gif jak sie okazuje...

Chciałem napisać uniwersalna funkcję,
w tym celu potrzebuję nauczyc się podmieniać w nazwach zmiennych

przykład, aby nie pisać abstrakcji:
to nie jest dokładna sytuacja, która załatwiłem jakims obejsciem, ale po prostu przykład problemu

to ponizsze nie działa (dokladnie fragment: $wynik = $wiersz[$pole]; ), jak poradzic sobie, by zadzialało, gdy zalezy mi aby zmienna pole sie zmieniała w miarę potrzeby?

  1.  
  2. //tu łaczę się z bazą
  3.  
  4. $zap = "SELECT *
  5. FROM `autor`
  6. ;";
  7.  
  8.  
  9. $pole = "nazwisko";
  10.  
  11. $dane = mysql_query($zap);
  12. $wiersz = mysql_fetch_array($dane);
  13. $wynik = $wiersz[$pole];
  14.  
  15.  


podobnie (prezentuję swoją ideę, zamiast dużo pisać, ten ponizszy kod nie działa zupełnie... zdaje sobie sprawę, ze jest niepoprawny):

  1. for($i=0;$i<10;$i++){
  2. $zmiennanr.$i = 10*$i;
  3. }


w innych językach umiem takie "cudo" zrobić, w JS do tego słuzy np eval() )w php mi nie wychodzi...
Fifi209
eval - w php też jest

Co do ostatniego:
  1. $zmiennanr.$$i

z tego co pamiętam.

Cytat(Less @ 31.10.2009, 10:02:06 ) *
to ponizsze nie działa (dokladnie fragment: $wynik = $wiersz[$pole]; ), jak poradzic sobie, by zadzialało, gdy zalezy mi aby zmienna pole sie zmieniała w miarę potrzeby?

Napisać sobie klasę, korzystając z __set() będziesz zmieniał wartości w bazie. (robił update) Chyba, że o coś innego Ci chodzi. haha.gif
Less
Cześć!
dzisiaj sprawdzałem . co napisałeś...

rzeczywiście co do 2-go tematu skrypt nie wyswietkla błedu, ale nie robi tego, co chciałem: nie przypisuje zmiennej wartości...
  1. $zmiennanr1 = "";
  2. $zmiennanr2 = "";
  3. $zmiennanr3 = "";
  4. $zmiennanr4 = "";
  5. $zmiennanr5 = "";
  6.  
  7.  
  8. for($i=1;$i<=5;$i++){
  9. $zmiennanr.$$i = 10*$i;
  10. }
  11.  
  12. echo ">>> ".$zmiennanr3;


echo nic nie wyswietla....

i co moę zrobic, aby to zdziałac ? smile.gif


Klasy - dla mnie problem na dłuzsze sprawdzanie, ale sie odezwę...


#luq
W sumie nie bardzo rozumiem, ale:

jeśli chodzi o zapytania to zrób sobie tak:
  1. (...)
  2. // $result to wynik funkcji myql_query()
  3. $table = array();
  4. while( $row = mysql_fetch_assoc( $result ) ){
  5. $table[] = $row;
  6. }


i wtedy jak zapytanie zwróci 2 rekordy z kolumnami A i B to masz tablicę:
Kod
$table[0]['A']
$table[0]['B']
$table[1]['A']
$table[1]['B']


co do zabawy zmiennymi zmiennych:
  1. $arr = array( 'var1' => 1, 'var2' => 'asd', 'var3' => true );
  2. foreach( $arr as $k => $v ){
  3. $$k = $v;
  4. }
  5.  
  6. echo $var1; // 1
  7. echo $var2; // asd
  8. echo $var3; // true (wyświetli 1)
laohost
Kod
$zmiennanr1 = "";
$zmiennanr2 = "";
$zmiennanr3 = "";
$zmiennanr4 = "";
$zmiennanr5 = "";


for($i=1;$i<=5;$i++){
     ${'zmiennanr'.$i} = 10*$i;
     }

echo ">>> ".$zmiennanr3;


Teraz powinno działać, ale nie mogę zrozumieć, dlaczego nie chcesz użyć do tego celu tablic smile.gif
Less
Dzieki! laohost, to w tym momencie interesowało mnie bardziej jako "problem", który kiedyś przeszkodził mi zrobic prostrzy skrypt, a poszerza to horyzonty (moje i innych zainteresowanych), wielkie dzieki, moje próby z funkcja eval() sie nie udawaly...


no to pozostaje jeszcze problem nr 1, cały czas nad nim pracuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.