14. april 2011 - 20:31
Der er
6 kommentarer og 1 løsning
Problemer med if og operatorer
Hej, Jeg har følgende kode: if (($_POST['hund']) == (1)) { include($_SERVER[DOCUMENT_ROOT].'side_a.php'); } if ($_POST['kat'] == (2 || 3 || 4 || 5)) { include($_SERVER[DOCUMENT_ROOT].'/side_a.php'); } if ($_POST['kat'] == (6 || 7 || 8)) { include($_SERVER[DOCUMENT_ROOT].'/side_b.php'); } Det der undrer mig er at hvis $_post er fx 6, køres både side_a og side_b, men det burde kun være side_b. Hvad overser jeg og hvor er fejlen?
Annonceindlæg fra Infor
14. april 2011 - 21:24
#1
( 3 || 4 || 5) evalueres først til en boolean = true; og da værdien 6 ikke er false går den ind i if'en.
14. april 2011 - 21:27
#2
Din if er ikke stillet korrekt op. Prøv if ($_POST['hund'] == '1') { include($_SERVER[DOCUMENT_ROOT].'side_a.php'); } if ($_POST['kat']=='2' || $_POST['kat']=='3' || $_POST['kat']=='4' || $_POST['kat']=='5') { include($_SERVER[DOCUMENT_ROOT].'/side_a.php'); } if ($_POST['kat']=='6' || $_POST['kat']=='7' || $_POST['kat']=='8')) { include($_SERVER[DOCUMENT_ROOT].'/side_b.php'); } Alternativt og meget pænere løsning er switch ($_POST['hund']) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; } switch ($_POST[kat]) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; }
14. april 2011 - 21:29
#3
ok, jeg troede if ($_POST['kat'] == (6 || 7 || 8)) {, blve læst som hvis variablen $_POST['kat'] er lig med 6 eller 7 eller 8, så include.... Hvordan får jeg så koden skrevet om så den er identisk med min beskrivelse?
14. april 2011 - 21:32
#4
morten12345678: ja dit første forslag havde jeg tænkt som mulighed, men troede det andet kunne lade sig gøre. jeg vælger case-switchen som jeg også havde overvejet. Smid svar da din kommentar var svar på mit spørgsmål
14. april 2011 - 21:34
#5
her :o)
14. april 2011 - 21:43
#6
En anden løsning er at skrive det med funktionen in_array. Ca.: if (in_array($_POST['kat'], array('2','3','4','5'))) { .... }
15. april 2011 - 18:29
#7
erikjacobsen: tak for forslaget, det lyder meget fornuftigt, jeg kikker på det.
Vi tilbyder markedets bedste kurser inden for webudvikling