Autor Zpráva
umpa
Profil *
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 *
Pardon Danu vránovou - prostě včechny co SPLNILY ??
tiso
Profil
umpa - prepisuješ si dokola jednu premennú. Použi pole a cyklus foreach na jeho prechádzanie. A vysvetlíš čo chcheš vlastne dosiahnuť?
imploder
Profil
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
imploder - divný spôsob prechádzania poľa v cykle...
Taps
Profil
imploder
podle mě by bylo vhodjěnší foreach
imploder
Profil
tiso, Taps
Není to jedno?
Taps
Profil
imploder
není, foreach slouží pro procházení pole
Majkl578
Profil
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 . ') ';
  }
}
arcadosi
Profil
pouzivas moj nick :-)
imploder
Profil
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
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
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.)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0