Autor | Zpráva | ||
---|---|---|---|
warking Profil |
#1 · Zasláno: 7. 5. 2016, 13:15:38
Může mi někdo vysvětlit, proč tohle vrací "sude"
$a = 3; function blabla(){ if($a %2 ) echo 'liche'; else echo 'sude'; } a tohle vrací "liché"? function blabla(){ if(3 %2 ) echo 'liche'; else echo 'sude'; } |
||
User Profil * |
#2 · Zasláno: 7. 5. 2016, 13:18:56
function blabla(){
if($a %2 != 0 ) echo 'liche'; else echo 'sude'; } |
||
warking Profil |
#3 · Zasláno: 7. 5. 2016, 13:20:33
Stále vrátí "sude"
|
||
User Profil * |
#4 · Zasláno: 7. 5. 2016, 13:20:37
Pokud napises pouze (x% y) vzdy vrací true
|
||
Fisir Profil |
Reaguji na warkinga:
Protože z vnitřku funkce nemůžeš přistupovat k vnějším proměnným. Proměnná $a se tedy funkci blabla() jeví jako nedefinovaná. Když si jí předáš jako parametr, bude to fungovat:
function blabla($a){ if($a %2 ) echo 'liche'; else echo 'sude'; } $a = 3; blabla($a); // liché $b = 2; blabla($b); // sudé Reaguji na Usera: „Pokud napises pouze (x% y) vzdy vrací true“ % je operátor modulo, vrací zbytek po celočíselném dělení. Nevrací true / false . Jestliže je číslo sudé, tak při dělení dvojkou dostaneš zbytek nula, to se převede na false , podmínka nebude splněna a vypíše se „sudé.“ Když je číslo liché, zbyde ti jedna, ta se převede na true , podmínka splněna bude a vypíše se „liché.“
|
||
warking Profil |
#6 · Zasláno: 7. 5. 2016, 13:23:44
Super, díky moc Fisir
|
||
warking Profil |
Můžu ještě otázku? Když budu mít:
$a = 2; $b = 3; jde nějak udělat funkce, aby se hodnoty prohodily? bez použití třetí proměnné |
||
Keeehi Profil |
warking:
$a ^= $b ^= $a ^= $b; list($a,$b) = array($b,$a); Ovšem pokud použiješ třetí proměnnou, tak je to nejrychlejší co se výkonnu týče a i nejlépe čitelné. |
||
warking Profil |
Mám formulář, který odešle na email nějaký text, potřebuji udělat, aby se střídaly 2 věci, které jsou v obsahu emailu, např: přijde email v takovém formátu:
"Dobrý den, pane blabla" Potřebuji, aby to jednou napsalo "Dobrý den" a po druhý třeba "Dobrý večer" a takhle se to bude střídat po každém odeslaném emailu. Chtěl jsem to udělat přes zjišťování sudého a lichého čísla, když bude sudé, odešle se jedna možnost, když liché tak druhá možnost a takhle se budou přehazovat, ale to je asi zbytečný a zdlouhavý, nemá někdo lepší nápad jak na to? |
||
Keeehi Profil |
warking:
„ale to je asi zbytečný a zdlouhavý“ Předpokládám, že ty emaily odesíláš v nějakém cyklu, pak by se to dalo zapsat nějak takto: mail($to, $subject, $i++ % 2 == 0 ? $message1 : $message2, ...); $i = 0;
Pokud chceš upravovat opravdu oslovení a nebyl to jen příklad, pak by to chtělo ale dělat na základě denní doby, ne? |
||
warking Profil |
#11 · Zasláno: 7. 5. 2016, 15:49:29
Oslovení byl jen příklad, děkuji, vyzkouším
|
||
warking Profil |
Ta inkrementace se provede jen 1x, takže má $i hodnotu 1 a větší mít nebude, protože se vždy definuje $i=0; co s tím? :D, kde ji definovat?
|
||
juriad Profil |
#13 · Zasláno: 7. 5. 2016, 17:11:42
warking:
Nejprve je potřeba si ujasnit pár věcí: 1) Posíláš e-maily v nějakém cyklu? 2) Chceš, aby se zpráva měnila každému uživateli nezávisle na ostatních? Nejspíš si budeš muset v databáze do tabulky uživatelů přidat sloupec, který bude vyjadřovat, jaké - řekněme - oslovení jsi naposledy použil. Při každém odeslání e-mailu tuto hodnotu updateneš. |
||
warking Profil |
#14 · Zasláno: 7. 5. 2016, 17:14:34
1) ano
2) chci aby první odeslaný email přes formulář obsahoval "Dobrý den", další odeslaný email "Dobrý večer", další odeslaný "Dobrý den".... atd a třeba hodnotu inkrementovat v databázi? protože z toho cyklu tu hodnotu definovanou z venku asi neinkrementuji |
||
Tomáš123 Profil |
#15 · Zasláno: 7. 5. 2016, 18:45:11
warking:
Zrejme hodnotu premennej $i nastavuješ vo vnútri cyklu. Použi buď cyklus for :
for($i = 0; $i < $pocet_planovanych_odoslani; $i++) { // mail(..., ..., $i % 2 == 0 ? $sprava1 : $sprava2, ...); } while :
$i = 0; while($i < $pocet_planovanych_odoslani) { // mail(..., ..., $i % 2 == 0 ? $sprava1 : $sprava2, ...); $i++; } |
||
warking Profil |
ale ja nevim dopredu pocet planovanych odeslani, pardon neposilam email v cyklu ale v if podmince
if(isset($_POST['submit'])){ . . . mail($to, $subject, $i % 2 == 0 ? $message1 : $message2, $headers); } Neví někdo? |
||
visionic Profil * |
#17 · Zasláno: 8. 5. 2016, 19:05:30
Takze server odesila pouze jeden mail po odeslani formulare. Takze musis nekde definovat pocitani, napriklad v souboru nebo v mysql a to cislo vytahnout a dle licheho nebo sudeho poctu odeslat danej mail. Za par let cislo muze byt 1599, coz je asi zbytecne. Takze udelej if ($x==0); a if ($x==1); a pokud cislo presahne dvojku if ($x==2) { $x=0; } a cislo tim vynulujes.
|
||
Časová prodleva: 9 let
|
0