PHP függvényekkel ismétlődő sorozat és tömbkészítést hogy lehet megcsinálni?
adott egy szépen működő php kódom. de ha pl meg akarok változtatni benne egy felsorolás szerű kódot akkor nem szeretnék manuálisan pötyögni egy csomót ha azt egy függvénnyel is ki tudom váltani.
látszik a listán hogy ismétlődik és speciel most csak 24-szer van leírva ugyan az a kiszámolható tömbelem de képzeljünk el olyan listákat is ahol 50-ig vagy 100-ig meg a számláló, és ha azon a tömbön meg kell változtatni valamit akkor végig kell írni újra az egészet.
szóval egy olyan függvény kellene ami egy visszamenő pontig addig ismételi az értékeket és műveleteket, amíg egy megadott számot, jelen esetben 24 tömbelemet el nem ér
<?php
$ff = $_GET['ff'];
$kulcs = substr($ff, 0, 2);
if ($kulcs==01) print "1-50 ";
if ($kulcs<>01) print '<a href="listazo.php?ff=01_01x50_0000-0500_00" target="_top">1-50</a> ';
if ($kulcs==02) print "51-100 ";
if ($kulcs<>02) print '<a href="listazo.php?ff=02_51x00_0000-0500_00" target="_top">51-100</a> ';
if ($kulcs==03) print "101-150 ";
if ($kulcs<>03) print '<a href="listazo.php?ff=03_01x50_0000-0500_01" target="_top">101-150</a> ';
if ($kulcs==04) print "151-200 ";
if ($kulcs<>04) print '<a href="listazo.php?ff=04_51x00_0000-0500_01" target="_top">151-200</a> ';
if ($kulcs==05) print "201-250 ";
if ($kulcs<>05) print '<a href="listazo.php?ff=05_01x50_0000-0500_02" target="_top">201-250</a> ';
if ($kulcs==06) print "251-300 ";
if ($kulcs<>06) print '<a href="listazo.php?ff=06_51x00_0000-0500_02" target="_top">251-300</a> ';
if ($kulcs==07) print "301-350 ";
if ($kulcs<>07) print '<a href="listazo.php?ff=07_01x50_0000-0500_03" target="_top">301-350</a> ';
if ($kulcs==08) print "351-400 ";
if ($kulcs<>08) print '<a href="listazo.php?ff=08_51x00_0000-0500_03" target="_top">351-400</a> ';
if ($kulcs==09) print "401-450 ";
if ($kulcs<>09) print '<a href="listazo.php?ff=09_01x50_0000-0500_04" target="_top">401-450</a> ';
if ($kulcs==10) print "451-500 ";
if ($kulcs<>10) print '<a href="listazo.php?ff=10_51x00_0000-0500_04" target="_top">451-500</a> ';
print "<br>";
if ($kulcs==11) print "501-550 ";
if ($kulcs<>11) print '<a href="listazo.php?ff=11_01x50_0500-1000_05" target="_top">501-550</a> ';
if ($kulcs==12) print "551-600 ";
if ($kulcs<>12) print '<a href="listazo.php?ff=12_51x00_0500-1000_05" target="_top">551-600</a> ';
if ($kulcs==13) print "601-650 ";
if ($kulcs<>13) print '<a href="listazo.php?ff=13_01x50_0500-1000_06" target="_top">601-650</a> ';
if ($kulcs==14) print "651-700 ";
if ($kulcs<>14) print '<a href="listazo.php?ff=14_51x00_0500-1000_06" target="_top">651-700</a> ';
if ($kulcs==15) print "701-750 ";
if ($kulcs<>15) print '<a href="listazo.php?ff=15_01x50_0500-1000_07" target="_top">701-750</a> ';
if ($kulcs==16) print "751-800 ";
if ($kulcs<>16) print '<a href="listazo.php?ff=16_51x00_0500-1000_07" target="_top">751-800</a> ';
if ($kulcs==17) print "801-850 ";
if ($kulcs<>17) print '<a href="listazo.php?ff=17_01x50_0500-1000_08" target="_top">801-850</a> ';
if ($kulcs==18) print "851-900 ";
if ($kulcs<>18) print '<a href="listazo.php?ff=18_51x00_0500-1000_08" target="_top">851-900</a> ';
if ($kulcs==19) print "901-950 ";
if ($kulcs<>19) print '<a href="listazo.php?ff=19_01x50_0500-1000_09" target="_top">901-950</a> ';
if ($kulcs==20) print "951-1000 ";
if ($kulcs<>20) print '<a href="listazo.php?ff=20_51x00_0500-1000_09" target="_top">951-1000</a> ';
if ($kulcs==21) print "1001-1050 ";
if ($kulcs<>21) print '<a href="listazo.php?ff=21_01x50_1000-1197_10" target="_top">1001-1050</a> ';
if ($kulcs==22) print "1051-1100 ";
if ($kulcs<>22) print '<a href="listazo.php?ff=22_51x00_1000-1197_10" target="_top">1051-1100</a> ';
if ($kulcs==23) print "1101-1150 ";
if ($kulcs<>23) print '<a href="listazo.php?ff=23_01x50_1000-1197_11" target="_top">1101-1150</a> ';
if ($kulcs==24) print "1151-1197 ";
if ($kulcs<>24) print '<a href="listazo.php?ff=24_51x97_1000-1197_11" target="_top">1151-1197</a> ';
?>
Szia!
Ezt egy egyszerűbben leírnám neked szívesen, csak magyarázd el légyszi, hogy az ff érékének a többi részének mi értelme van?
pl. 24_51x97_1000-1197_11
Addig értem, hogy 24-edik oldal, de e többi? Van valami pláne ebben? :D
Önmagában nem jelentene problémát amit meg akarsz valósítani, mert egy ciklus segítségével simán megoldható. Viszont, az ff változók egységtelenül épülnek fel - ahogy az előttem szóló is írta - és itt ott nem is látom a logikát.
Szóval 2 út van: vagy leegyszerűsíted az ff változókat, vagy elmagyarázod a logikáját, és akkor talán megoldható.
az $FF fügvényt azért csináltam hogy ne legyen egy rakat fügvény a linkemben felsorolva ...
majd későbbiekben magát a fügvényt szétdarabolva fügvényekre osztom...
$ff = $_GET['ff'];
$kulcs = substr($ff, 0, 2); a ciklus sorszáma ami minden ciklusban egy-el nőne amígy el nem éri a 24-et amikor is abbahagyódna a ciklusok ismétlése és fojtatná a kód többi részével
$md = substr($ff, -2, 2); ez a képek sorszámának első két tagja , mivel 50 képet jelenít meg a képgaléria oldalam egy oldalon így csak minden második cilusban nőne egyet
$sd = substr($ff, 9, 9); ez a mappa nevét tartalmazó elem, egy mappába van 500 kép
$gd = substr($ff, 3, 5);
ez két különböző fájlba tettem hogy első fájlot include parancsal úgy olvassa be hogy az első 50 képet tölti be, azaz 01-50-ig, és minden páros ciklusba 51-00 azaz itt a képek sorszámának az utolsó 2 számjegyével foglalkozik
minden értékét ki lehetne számolni ha tudnám mi az a ciklus magából a kulcs sorozatszámából simán ki tudnám számolni.
nem lehet egy bonyolult függvény csak a google-vel szenvedek és nem azt dobja ki amit keresek.
Hát ez egy undorító kód, már ne is haragudj.
1) Google: php switch-case...
2) Ezért kell a programozáshoz matektudás, mert így pl. két/három sorban meg lehet oldani az egészet.
na ... szenvedtem vele egy kicsit ...
interneten megtaláltam amit kell , csak azt nem tudtam eddig hogy "ciklus" fügvénynek nevezik ezt, de így már megtaláltam ...
$ciklus = 1
do {
müvelet_01
müvelet_02
müvelet_03
müvelet_stb
++$ciklus;
} while ($ciklus < 23);
naszóval a következő alkutásomnak is ugyan az a kimeneti eredménye mint az eredetinek :
<?php
$ff = $_GET['ff'];
$kulcs = substr($ff, 0, 2);
$md = substr($ff, -2, 2);
$sd = substr($ff, 9, 9);
$gd = substr($ff, 3, 5);
//* beviteli paraméterek :
$Vegertek = 1197;
$ciklus = 1;
$ciklus_vege = 23;
do {
$kulcs_new = $ciklus;
if (substr($kulcs_new, -2, -1)==false) $kulcs_new = "0".$kulcs_new;
if (substr($ciklus, -1)==0) $nd_rad="paros";
if (substr($ciklus, -1)==1) $nd_rad="paratlan";
if (substr($ciklus, -1)==2) $nd_rad="paros";
if (substr($ciklus, -1)==3) $nd_rad="paratlan";
if (substr($ciklus, -1)==4) $nd_rad="paros";
if (substr($ciklus, -1)==5) $nd_rad="paratlan";
if (substr($ciklus, -1)==6) $nd_rad="paros";
if (substr($ciklus, -1)==7) $nd_rad="paratlan";
if (substr($ciklus, -1)==8) $nd_rad="paros";
if (substr($ciklus, -1)==9) $nd_rad="paratlan";
if ($nd_rad=="paros") $md_new = $ciklus/2;
if ($nd_rad=="paratlan") $md_new = ($ciklus-1)/2;
if (substr($md_new, -2, -1)==false) $md_new = "0".$md_new;
if ($ciklus<=25) $sd_new = "1000-1197";
if ($ciklus<=20) $sd_new = "0500-1000";
if ($ciklus<=10) $sd_new = "0000-0500";
$szoveg_01 = ((($ciklus-1)*50)+1)."-".($ciklus*50)." ";
if ($nd_rad=="paros") $gd_new = "51x00";
if ($nd_rad=="paratlan") $gd_new = "01x50";
if ($ciklus==$kulcs) print $szoveg_01;
if ($ciklus<>$kulcs) {
print '<a href="listazo.php?ff=';
print $kulcs_new."_".$gd_new."_".$sd_new."_".$md_new;
print '" target="_top">'.$szoveg_01.'</a> ';
}
++$ciklus;
} while ($ciklus < $ciklus_vege);
if ($kulcs==24) print "1151-1197 ";
if ($kulcs<>24) print '<a href="listazo.php?ff=24_51x97_1000-1197_11" target="_top">1151-1197</a> ';
?>
ha ki birtátok bogozni akkor tudtok valamit ... amit én még nem találtam meg interneten az a kerekítési rendszer hogy a képkatériába aminek most az oldalszámozását csináltam meg annak 1197 eleme van, szóval kerekítő fügvényem az még nincs ... 50-esével kerekíteném egyszer lefele, aztán meg páros/páratlant is "if" fügvénnyel számítottam ki ... meg ilyen apróságok ...
Szerintem elég lenne paraméternek csak a kulcs, az összes többit ha jól látom ki lehet számolni ebből...
Először is ajánlom, hogy nézd át ezt:
Utána pedig olvass el egy általánosan programozás elméletről szóló könyvet. Az, hogy a páros-páratlan dolgot így csinálod, arra utal, hogy programozás elméletet nem igazán tanultál.
Még ha nincs is függvény rá (vagyis ha nem találsz), akkor is egy szám akkor páros ha kettővel osztható. Kettővel egy szám akkor osztható, ha az osztási maradéka 2-vel egyenlő zéró. (PHPben: $paros = ( ($x % 2) === 0 ); A páros logikai változó, akkor lesz igaz, ha x páros. Alternatíva: $paros = (!($x & 1));)
Ize... Csak nekem "alap" hogy hogy a "if"-et koveti egy "else"?
if ha a feltetel teljesul (x=y) akkor: irdki "blalblabla x"
else ha nem.
ha nem, akkor ird ki "blalbalala $valtozo blablalabla"
Es kozben mondjuk novelem a valtozo erteket $valtozo = $valtozo++ Es ezzel el tudom erni, hogy annyiszor irjon ki valamit, amig a $valozo nem lesz x.
Most vagy en kovetek rossz logikat, vagy mindenki mas. Ha en tevednek, szoljatok ram, de szerintem ez if - else megoldasu problema.
Nem muszáj else ág, elhagyható. De igazad van, néhány esetben kellene a kérdező kódjában is... :D
Amúgy az a PHPben nem muszáj $valtozo = $valtozo++ legyen, hanem egyszerűen csak $valtozo++ vagy akár ++$valtozo. Ha jól tudom mindegyiket elfogadja.... :P
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!