Jesper Brunholm <nospam@brunholm-scharff.dk> writes:
> Jacob Bunk Nielsen wrote:
>
>> Det synes jeg er en lettere klodset løsning hvis man kun skal skifte
>> mellem to farver. Der plejer jeg at bruge noget i stil med:
>
> Nu var formålet i lige så høj grad at forklare hvad der foregår, også
> for en som ikke har kodet en masse c
Ja - men derfor skader det vel ikke at lære PHP, det er jo trods alt
en del af sproget ?-)
> Derudover må jeg blankt tilstå at jeg bedre kan li syntaksen med
> tydeligt if og else, men nok blot fordi jeg ikke rigtigt har noget c
> bag mig
Det kan jeg fint have forståelse for. Igen ville jeg blot vælge at
skrive:
if ($color == "farve1) {
$color = "farve2";
}
else {
$color = "farve1";
}
I stedet for din modulo-ting. Da jeg finder ovenstående endnu mere
læsevenligt (måske specielt for en begynder).
>> $color = ($color == "farve1" ? "farve2" : "farve1");
>> Så er man sikret imod mystiske overflows og andre sjove ting når man
>> skifter til et andet miljø hvor den slags kan forekomme.
>
> Det må jeg lige forstå - der kan ske noget mystisk hvis man bruger den
> syntaks i... hvilken sammenhæng?
Forstil dig fx følgende stykke C-kode:
char i = 0;
for (i=0;i<300;++i) {
if (i%2 == 0) { ... }
}
Her går dit farveskift godt på trods af at i overflower, løkken
stopper bare aldrig. Derfor siger jeg at man bør tænke over hvad man
bruger hvor.
Bruger du i%3 får du også et mystisk resultat for farveskiftet når i
overflower, og den letteste løsning vil så være at erklære i som int,
men hvad så senere? Skulle jeg vælge mellem 3 farver kunne man gøre:
char i = 0;
....
if (i=(i%3)) { ... }
....
Så kan du køre lige så langt du gider uden at have problemer med
farveskift og overflows, og uden at skulle erklære flere og større
variable end du behøver. Der skal selvsagt en anden stopbetingelse på
en eventuel løkke.
Jeg ved godt at PHP ikke har stærke typer, og man derfor får temmelig
meget hjælp til ikke at dumme sig, men det gør man ikke altid i andre
miljøer, og så synes jeg lige så godt at man kan tage de gode vaner
fra andre miljøer med sig til PHP.
> Endelig må jeg (dumt) spørge hvor jeg (og begynderen som vi rådgiver)
> finder dokumentation på hvordan c-syntaksen fungerer hvis vi ikke lige
> forstod det 100% ud fra ovenstående. Jeg kan ikke finde det i "control
> structures"
I manualen under expressions:
<
http://dk.php.net/manual/en/language.expressions.php>.
--
Jacob -
www.bunk.cc
System restarting, wait...