Avatar billede ofirpeter Nybegynder
05. januar 2004 - 19:35 Der er 5 kommentarer og
1 løsning

Hvordan "formulere" jeg IF sætning

Jeg skal hvis to variabler er de samme udskrive et stykke tekst, og hvis de ikke er ens udskrive en anden.

Mit eget forslag ville være=

<?
$navn1 = "peter";
$navn2 = "peter";

if($navn1 = $navn2) {
echo "Hej! Du ER INDE!";
} else {
echo "Navnene er ikke ens";
}
?> 

Men ligemeget hvad jeg skriver i $navn1 og $navn2 så skrive den Hej! Du ER INDE!.
Hvad gør jeg forkert?
Avatar billede jakobclausen Nybegynder
05. januar 2004 - 19:37 #1
Du skal bruge sammenlignings ligemed:

<?
$navn1 = "peter";
$navn2 = "peter";

if($navn1 == $navn2) {
echo "Hej! Du ER INDE!";
} else {
echo "Navnene er ikke ens";
}
?>
Avatar billede Slettet bruger
05. januar 2004 - 19:43 #2
Og forklaringen er at et enkelt =tegn betyder at variablen på venstre side tildeles værdien på højre side. Resultatet af denne tildeling er så lig med den værdi, som variablen blev tildelt.

Her er lige et eksempel:

<?
$navn1 = "claus";
$navn2 = "peter";

if($navn1 = $navn2) {
echo "Hej! Du ER INDE!";
} else {
echo "Navnene er ikke ens";
}
?>

Den vil give samme resultat, som hvis du havde gjort dette:

<?
$navn1 = "claus";
$navn2 = "peter";
$navn1=$navn2;

if($navn1) {
echo "Hej! Du ER INDE!";
} else {
echo "Navnene er ikke ens";
}
?>
Avatar billede ofirpeter Nybegynder
05. januar 2004 - 19:44 #3
Nå ja for søren, nu må jeg lige til at vågne op. Tak!
Avatar billede Slettet bruger
05. januar 2004 - 19:51 #4
Bare rolig, du kan være helt sikker på, at du kommer til at lave samme fejl igen. Den er en af de hyppigst optrædende kodefejl, og den kan være hulens svær at få øje på.

En måde at fange den på kunne være at gøre det til en vane at sørge for at venstresiden af en sammenligning altid er noget, der ikke kan tildeles en værdi, så får man nemlig en PARSE-error, hvis man bruger enkelt =.

Her er Jakobs kode modificeret på den måde, jeg mener:

<?
$navn1 = "peter";
$navn2 = "peter";

if("$navn1" == $navn2) {
echo "Hej! Du ER INDE!";
} else {
echo "Navnene er ikke ens";
}
?>
Avatar billede jakobclausen Nybegynder
05. januar 2004 - 20:20 #5
sandbox >> Kan den så godt stadig sammenligne de to værdier ?
Avatar billede Slettet bruger
05. januar 2004 - 20:28 #6
Ja.

Hvis man bare skal sammenligne med en konstant, kan man også skrive den på venstre side. PHP er ligeglad.

($variabel == 7) er det samme som (7 == $variabel)

Hvis det er tal man skal sammenligne, kan man gøre således:

<?
$tal1 = 7;
$tal2 = 8;

if($tal1+0 == $tal2) {
echo "Tallene er ens";
} else {
echo "Tallene er ikke ens";
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester