Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Dynamiczna zmiana nazwy zmiennej
Vocatio
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Kluczbork

Ostrzeżenie: (0%)
-----


Czesc
Chcialbym uzyskac efekt dynamicznej zmiany nazwy zmiennej
tak wyglada skrypt ktory zrobillem ale jak zapewne sie domyslacie - nie dziala

[php:1:688dc51577]<?php
$opcja1=10; $opcja2=20; $opcja3=30; $opcja4=40; $opcja5=50;
$ilosc_opcji=5;

for ($i=1;$i<=$ilosc_opcji;$i++)
{
echo '>>'.$opcja{$i}.'<<<BR>';
}
?>[/php:1:688dc51577]

Oczywiscie w moim zmierzeniu w efekcie powinienem otrzymac na ekranie wynik w postaci wyswietlonych liczb


>>10<<
>>20<<
>>30<<
>>40<<
>>50<<


jednak problem w tym ze cos mi to polaczenie zmiennych [php:1:688dc51577]<?php
$opcja{$i} ?>[/php:1:688dc51577] nie dziala

braklo mi juz pomyslow na ich polaczenie
Pozdrawiam
Wojtek B
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
lukaswoj
post
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 2.01.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Rozważ użycie tablic, w tym przypadku będzie to dużo lepsze rozwiązanie.

[php:1:5f3a09bad5]
<?php
$opcja1=10; $opcja2=20; $opcja3=30; $opcja4=40; $opcja5=50;
$ilosc_opcji=5;

for ($i=1;$i<=$ilosc_opcji;$i++)
{
$nazwa_zmiennej="opcja$i";
echo '>>'.$$nazwa_zmiennej.'<<<BR>';
}
?>
[/php:1:5f3a09bad5]
lub
[php:1:5f3a09bad5]
<?php
$opcja1=10; $opcja2=20; $opcja3=30; $opcja4=40; $opcja5=50;
$ilosc_opcji=5;

for ($i=1;$i<=$ilosc_opcji;$i++)
{
echo '>>'.${'opcja'.$i}.'<<<BR>';
}
?>
[/php:1:5f3a09bad5]
Go to the top of the page
+Quote Post
party
post
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 19.08.2003
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Lepsze są tablice:
[php:1:e365ac7e1e]<?php
$opcja[] = 10;
$opcja[] = 20;
$opcja[] = 30;
$opcja[] = 40;
$opcja[] = 50;

foreach( $opcja AS $key => $val )
{
print( 'Klucz: '. $key .' // Wartość: '. $val .'<br>' );
}
?>[/php:1:e365ac7e1e]
Go to the top of the page
+Quote Post
rogrog
post
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

Ostrzeżenie: (0%)
-----


zgadzam się że lepsze są tablice

[php:1:3f435ae268]<?php
$opcja[] = 10;
$opcja[] = 20;
$opcja[] = 30;
$opcja[] = 40;
$opcja[] = 50;

foreach($opcja as $liczba) {
echo ">>$liczba<<<br>n"; // to n to zeby byl elegancki kod w źródle
}
?> [/php:1:3f435ae268]

jeżeli zależy ci na zmiennych zmiennych :

[php:1:3f435ae268]<?php
$opcja1=10;
$opcja2=20;
$opcja3=30;
$opcja4=40;
$opcja5=50;
$ilosc_opcji=5;

for ($i=1;$i<=$ilosc_opcji;$i++)
{
echo '>>'.${"opcja$i"}.'<<<BR>';
}
?>[/php:1:3f435ae268]

A żeby pominąć podawanie zmiennej $ilosc_opcji :


[php:1:3f435ae268]<?php
$opcja1=10;
$opcja2=20;
$opcja3=30;
$opcja4=40;
$opcja5=50;


for($a=0; $a>=255; $a++){

// EDIT : tak było błędnie: if(isset('opcja'.$a)) $ilosc_opcji++;
if(isset(${"opcja$i"})) $ilosc_opcji++; //to jest ok


}



for ($i=1;$i<=$ilosc_opcji;$i++)
{
echo '>>'.${"opcja$i"}.'<<<BR>';
}
?>[/php:1:3f435ae268]
Go to the top of the page
+Quote Post
Vocatio
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Kluczbork

Ostrzeżenie: (0%)
-----


Dzieki Wam wszystkim, wykorzystalem zgodnie z Wasza rada tablice - jednym z moich bledow byl fakt przytoczenia zbyt krotkiego fragmentu kodu, a efektem bylo to ze praktycznie zadna z Waszych rad niedzialala. Dopiero po dluzszej analizie zauwazylem ze 'za duzo razy' uzylem tej samej nazwy zmiennej w skutek czego doprowadzilem poprzez petle do takiej jej zmiany ze nie pobierala danych z tablicy
[php:1:8dac57301b]<?php
for ($i=0;$i<$ilosc_opcji;$i++)
{
>>$opcja<<=$opcja[$i];
$query="SELECT opcje FROM us_opcje WHERE id='>>$opcja<<';";
$result=mysql_query($query);
$wynik=mysql_fetch_array($result);
$opcja_nazwa=$wynik['opcje'];
if ($i>0) {echo '; ';}
echo $opcja_nazwa;
}
?>[/php:1:8dac57301b]
po zmianie zaznaczonych zmiennych na $id_opcja wszystko ruszylo jak trzeba.
A wasze info na tamat zmiany zmiennej zapisalem wrecz sobie w notatniku bo zawsze mi to sprawia klopot i niewatpliwie wykorzystam
szkoda ze nie moge wszystkim dac "pomogl" wiec dam je osobie ktora dostarczyla mi najwiecej "wartosciowych" dla mnie informacji czyli rogrogowi
Pozdrawiam
WojtekB
Go to the top of the page
+Quote Post
Vocatio
post
Post #6





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 1.09.2002
Skąd: Kluczbork

Ostrzeżenie: (0%)
-----


Cytat
szkoda ze nie moge wszystkim dac "pomogl" wiec dam je osobie ktora dostarczyla mi najwiecej "wartosciowych" dla mnie informacji czyli rogrogowi
Pozdrawiam
WojtekB


A jednak moge - wiec daje wszystkim sprawiedliwie, mam nadzieje ze za to nie oberwe
pzdr
WojtekB
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:37