Vocatio
30.05.2004, 22:22:56
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
30.05.2004, 22:29:56
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
31.05.2004, 14:27:16
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
31.05.2004, 15:31:16
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
31.05.2004, 20:40:49
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
31.05.2004, 20:42:51
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.