[PHP] OR Functie of ||
Ik ben bezig met een scriptje om de grootste gemene deler uit te rekenen, nu moet ik daar bij ook kijken of de gebruiker wel een getal heeft ingevuld en mag dus niet bestaan uit letters. (en ja, het is voor school) Maar dit heb ik allemaal voor elkaar, alleen zit mij iets dwars, nu weet ik niet zeker of dit wel goed is, want het werkt wel, alleen heb ik deze functie || gebruikt om te kijken of de gebruiker wel getallen heeft ingevuld, alleen heb ik (mijn gebruikte OR functie nooit eerder gezien) en wil ik aan jullie vragen of het wat uitmaakt of ik | gebruik of ||, een verschil in zit.
Misschien allemaal een beetje raar uitgelegd, maar hier onder het script.
Nogmaals, het script werkt wel, laat alleen getallen door, alleen wil ik weten of 1 | wel mag. Hierbij moet ik nog wel even zeggen, zodra ik het verander in 2 ||, werkt mijn script niet meer goed.
Excuses voor het slecht uitleggen.
Gewijzigd op 01/01/1970 01:00:00 door Lol lol
Maar ik vind het zowieso een vreemde constructie.
als $A of $B een getal is, dan is het goed,, anders niet.
Oftwel,
$A = 5;
$B = 'W';
Laat hij ook gewoon goed door.
Volgens mij moet je hier eerder een AND gebruiken
nico schreef op 29.04.2009 22:49:
Dit heeft volgens mij specifiek te maken met de functie Ctype Digit.
Maar ik vind het zowieso een vreemde constructie.
als $A of $B een getal is, dan is het goed,, anders niet.
Oftwel,
$A = 5;
$B = 'W';
Laat hij ook gewoon goed door.
Volgens mij moet je hier eerder een AND gebruiken
Maar ik vind het zowieso een vreemde constructie.
als $A of $B een getal is, dan is het goed,, anders niet.
Oftwel,
$A = 5;
$B = 'W';
Laat hij ook gewoon goed door.
Volgens mij moet je hier eerder een AND gebruiken
Zodra ik AND doe, dan geeft hij continue "Deze karakters mogen niet!", zodra ik 1 | gebruik, pakt hij alles goed. En ik heb hier specifiek gekozen voor ctype digit, omdat is_numeric ook wiskundige notaties door laat, zoals 1a, en dat mag niet.
Daarom gebruik ik eigenlijk ook weer OR omdat AND dus gewoon weg niet werkt. Tenzij ik iets verkeerd heb geplaatst.
{
}
Zo beter?
Ik denk namelijk dat hij bij jou een if in een if doet
if /*ctype_digit**altijd TRUE**\ AND /*$A of $B is TRUE*\
Je moet wel zorgen dat je functie aan 1 stuk door is geschreven, zonder spatie.
nico schreef op 29.04.2009 23:03:
if (ctype_digit($A) && ctype_digit($B))
{
}
Zo beter?
Ik denk namelijk dat hij bij jou een if in een if doet
if /*ctype_digit**altijd TRUE**\ AND /*$A of $B is TRUE*\
Je moet wel zorgen dat je functie aan 1 stuk door is geschreven, zonder spatie.
{
}
Zo beter?
Ik denk namelijk dat hij bij jou een if in een if doet
if /*ctype_digit**altijd TRUE**\ AND /*$A of $B is TRUE*\
Je moet wel zorgen dat je functie aan 1 stuk door is geschreven, zonder spatie.
Ok, dat werkt perfect, bedankt!
Had hier achter af zelf ook wel aankunnen denken -_-.
| is een Bitwise operator
En kan je dus niet zomaar gebruiker om te kijken of iets een getal is
Kijken of iets een getal is, doe je met de daarvoor bestemde functies, zoals ctype_digit, maar ook is_numeric of is_int zijn daarvoor te gebruiken. Lees dan wel even goed wat welke functie doet. Wel zo handig, omdat te weten waar je mee bezig bent :)
nico schreef op 29.04.2009 22:49:
Dit heeft volgens mij specifiek te maken met de functie Ctype Digit.
Nee, heeft te maken met Operator Precedence. Zie language.operators.precedence en language.operators.logical voor uitleg.
Zoals WillemJan Z telt | niet mee, omdat dat bitwise is.