Autor | Zpráva | ||
---|---|---|---|
umpa Profil * |
#1 · Zasláno: 10. 3. 2009, 13:21:05
Začínám s PHP, teď se učím řetězce a narazil jsem na (pro mne po 2,5 hod.) nevyřešitelný problem.
vypise mi to vzdy poslední promenou, jak tam mám dostat i toho Jana Vávru ?? DÍKY MOC, umpa <?php $ukol='Jan Vrána, nesplněno'; $ukol='Dana Vránová, splněno'; $ukol='Vojta Hrubeš, splněno'; $ukol='Mirka Poloňáková, nesplněno'; if (strpos(" ".$ukol, "splněno")) echo "přidat 500,- ($ukol) "; ?> |
||
umpa Profil * |
#2 · Zasláno: 10. 3. 2009, 13:22:18
Pardon Danu vránovou - prostě včechny co SPLNILY ??
|
||
tiso Profil |
#3 · Zasláno: 10. 3. 2009, 13:31:04
umpa - prepisuješ si dokola jednu premennú. Použi pole a cyklus foreach na jeho prechádzanie. A vysvetlíš čo chcheš vlastne dosiahnuť?
|
||
imploder Profil |
#4 · Zasláno: 10. 3. 2009, 13:40:25
Problém je jednoduchý: vypíše se vždy jen poslední proměnná, protože je tam celou dobu jen 1 proměnná, a to $ukol. Ta se pořád přepisuje. Zřejmě jsi chtěl proměnných víc se stejným jménem - to se dělá pomocí pole: za název dáš do závorek číslo nebo řetězec, tzv. index. Pole pak budeš muset projít cyklem.
<?php $ukol[0]='Jan Vrána, nesplněno'; $ukol[1]='Dana Vránová, splněno'; $ukol[2]='Vojta Hrubeš, splněno'; $ukol[3]='Mirka Poloňáková, nesplněno'; for($i=0; isset($ukol[$i]); $i++) if (strpos(" ".$ukol[$i], " splněno")) echo "přidat 500,- ($ukol[$i]) "; ?> Před splněno jsem dal mezeru, protože samotné "splněno" by se našlo i ve slově "nesplněno". |
||
tiso Profil |
#5 · Zasláno: 10. 3. 2009, 14:02:13
imploder - divný spôsob prechádzania poľa v cykle...
|
||
Taps Profil |
#6 · Zasláno: 10. 3. 2009, 14:13:22
imploder
podle mě by bylo vhodjěnší foreach |
||
imploder Profil |
#7 · Zasláno: 10. 3. 2009, 14:20:45
tiso, Taps
Není to jedno? |
||
Časová prodleva: 4 dny
|
|||
Taps Profil |
#8 · Zasláno: 14. 3. 2009, 17:28:49
imploder
není, foreach slouží pro procházení pole |
||
Majkl578 Profil |
#9 · Zasláno: 14. 3. 2009, 17:40:47
imploder
fuj, to je ale exremne nevkusne reseni. a to isset v cyklu je jeste odpornejsi. nejlepsi reseni je asi takoveto: $ukoly = array( 'Jan Vrána, nesplněno', 'Dana Vránová, splněno', 'Vojta Hrubeš, splněno', 'Mirka Poloňáková, nesplněno', ); foreach($ukoly as $ukol) { if (strpos(' ' . $ukol, ' splněno')) { echo 'přidat 500,- (' . $ukol . ') '; } } |
||
Časová prodleva: 9 měsíců
|
|||
arcadosi Profil |
#10 · Zasláno: 8. 12. 2009, 21:55:33
pouzivas moj nick :-)
|
||
imploder Profil |
#11 · Zasláno: 9. 12. 2009, 01:01:22
Když už je to vlákno vytažené...
Majkl578: „fuj, to je ale exremne nevkusne reseni. a to isset v cyklu je jeste odpornejsi.“ V Céčku by takové řešení bylo jediné možné (dokonce ještě "nevkusnější", protože místo isset()u by se porovnával index s nějakým maximálním - hraničním). Je isset pomalý - nějak neefektivní oproti foreach? Je pravda, že s tím issetem je to míň univerzální, kdyby byla v poli někde díra - třeba $ukol[3] by byla nedefinovaná - tak by se procházení před ní zastavilo, zatímco při procházení foreachem ne. |
||
Majkl578 Profil |
#12 · Zasláno: 9. 12. 2009, 10:25:04
arcadosi:
??? [#11] imploder: Foreach je rozhodně přehlednější. Navíc - jak jsi řekl - tvůj cyklus zkolabuje ve chvíli, kdy bude mezera v indexu. Céčko je řekl bych poměrně hloupé co se týče takovýchto věcí. :) |
||
nightfish Profil |
#13 · Zasláno: 9. 12. 2009, 10:45:20
imploder:
„V Céčku by takové řešení bylo jediné možné“ nevím proč mi to připomíná: "The determined Real Programmer can write Fortran programs in any language." (aneb Odhodlaný Opravdový programátor umí psát fortranové programy v jakémkoliv jazyce.) |
||
Časová prodleva: 14 let
|
0