Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Dynamiczna zmiana nazwy zmiennej
Forum PHP.pl > Forum > PHP
Vocatio
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
lukaswoj
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]
party
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]
rogrog
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]
Vocatio
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
Vocatio
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
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.