login  Naam:   Wachtwoord: 
Registreer je!
 Forum

($i++ % 2) ? '#0000FF' : '#FF0000';

Offline Grayen - 16/08/2006 22:28
Avatar van GrayenPHP ver gevorderde ik heb php niet uit een boek geleerd vandaar dat ik af en toe dingen tegen kom waarvan ik niet weet hoe het heet en hoe het nou precies werkt, ik weet in dit geval wel wat het doet, maar ik wil graag weten hoe het werkt en hoe je zoiets noemt?

en dan heb ik het over dit scriptje

  1. ($i++ % 2) ? '#0000FF' : '#FF0000';

12 antwoorden

Gesponsorde links
Offline vinTage - 16/08/2006 22:32
Avatar van vinTage Nieuw lid een verkorte if else notatie ?

in jouw scriptje gebeurt er zoiets :

if(het restant van (i / 2)==0) {
$kleur = '#0000FF';
}
else
{
$kleur = '#FF0000';
}
Offline Lemon - 16/08/2006 22:41
Avatar van Lemon PHP expert Ziet er maar een slechte boek hoor.

Elke boek die het aanraad om een actie uit te voeren in een if structuur is slecht bezig. $i++ == 5 bv
Offline CDNC - 16/08/2006 23:09
Avatar van CDNC PHP ver gevorderde
Citaat:
ik heb php niet uit een boek


nouja
Offline Stijn - 16/08/2006 23:59
Avatar van Stijn PHP expert % = de module ( 5/2 = 2.5) -> hier is de modulo 5 (2.5 en alles wat na de komma komt is rest)

Dit is inderdaad de verkorte versie van IF/ELSE , jou script wil zeggen als de modulo 2 van $i++.
Als het 0 is gaat hij de code uitvoeren voor het ':'-teken en als het niet zo is gaat hij de code na het ':'-teken uitvoeren.

verheldert? kan niet anders is gewoon een lange herhaling van de repleys hier boven.

stijn
Offline Simon - 17/08/2006 00:29
Avatar van Simon PHP expert bij 5/2 is de modulo toch 1 ?
Offline CDNC - 17/08/2006 00:39
Avatar van CDNC PHP ver gevorderde jah. 5 % 2 = 4 / 2 + 1 = 1 is de rest... en dat is dan ook het resultaat
Offline Thomas - 17/08/2006 10:30
Avatar van Thomas Moderator
  1. $kleur = ($i++ % 2) ? '#0000FF' : '#FF0000';


  1. if(het restant van (i / 2)==0) {
  2. $kleur = '#0000FF';
  3. }
  4. else
  5. {
  6. $kleur = '#FF0000';
  7. }


Volgens mij is het net andersom .

Stel $i is 0.
Dan staat er 0 % 2.
Dit is 0 (false), dus wordt $kleur #FF0000 en is $i na afloop ($i++ is $i achteraf verhogen) gelijk aan 1.

Toch? 
Offline Grayen - 17/08/2006 10:34
Avatar van Grayen PHP ver gevorderde heel erg bedankt voor de duidelijke antwoorden , dus ff alles op een rijtje:

(if) ? 'als het if is' : = else) 'als het else is';
en die % = de module (is de rest) dus als je bijv 7 / 3 zou hebben dat zou de module 1 zijn?
Offline Thomas - 17/08/2006 10:44
Avatar van Thomas Moderator a % b = c

c is de rest na deling van a door b.

a % b = c

is "equivalent" met

b * q + c = a

waarbij q het "hele aantal keren" is dat b in a past.
Offline lau - 17/08/2006 11:57
Avatar van lau HTML interesse off:
whaha ben blij dat mijn studie nog niet begonnen is aan de TU
Offline Richard - 17/08/2006 12:58
Avatar van Richard Crew algemeen de ?: methode heet overigens 'ternary', het is inderdaad gewoon een verkorte if/else structuur;-)
Offline Tri - 17/08/2006 19:01
Avatar van Tri PHP interesse $kleur = ($i++>>1<<1 == $i) ? '#0000FF' : '#FF0000';

is volgens mij sneller :-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s