Längre if-sats

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Sthlms_Jonas



Medlem i: 4649 dagar
Från: Stockholm
Status: Offline



#742583
Inlägg Skrivet: 2019-05-26 12:04      Ämne: Längre if-sats Citera

Har gjort en längre if-sats som jag inte tyck borde bli san.

gjorde ett echo och fick fram:
KOD:
1:
if ((5 == && == && 1 != 1) || (7 == && 1 == 1) || (9 >= ) ) {

Varför blir den här san? vist det finns vissa saker som är sanna fast inte allt.

if-satsen:
KOD:
1:
if (($editarea == $S_competence && $S_allotments == $S_modify && $S_site != 1) || ($adminhelp == $S_competence && 1 == $S_site) || ($admin >= $S_competence) ) { ?>

Tanken är att minst en av de 3 villkoren innom parenteserna ska vara san.
blir den knäpp ifall vissa variabler är satta till NULL?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Peppe L-G



Medlem i: 4490 dagar
Från: Mullsjö
Status: Offline



#742585
Inlägg Skrivet: 2019-05-26 12:55      Ämne: Citera

Ska 9 >= tolkas som 9 >= NULL? Är nian en sträng eller en integer?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Sthlms_Jonas



Medlem i: 4649 dagar
Från: Stockholm
Status: Offline



#742586
Inlägg Skrivet: 2019-05-26 13:37      Ämne: Citera

9 sätts med
KOD:
1:
$admin = 9


den andra kommer från databas och är en tinyint och sätts med
KOD:
1:
$S_competence = isset($_SESSION['competence']) ? $_SESSION['competence'] : NULL;
2:
 
3:
$_SESSION['competence'] = $row['competence'];


Så är man inte inloggad blir det NULL..
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Peppe L-G



Medlem i: 4490 dagar
Från: Mullsjö
Status: Offline



#742587
Inlägg Skrivet: 2019-05-26 22:40      Ämne: Citera

Så du jämför en integer med NULL. Det är för mig oklart hur datorn hanterat det, men det är ev. detta som ställer till det.

Jag kollade i dokumentationen:

https://www.php.net/manual/en/language.operators.comparison.php

Men jag förstår fortfarande inte. Och även om jag skulle gjort det så skulle din lösning inte vara optimal, för när andra programmerare läser din kod så blir troligtvis även de osäkra på hur den faktiskt fungerar när du jämför en integer med NULL. Den bästa lösningen är nog att lägga till extra AND som kollar ifall variablerna är NULL eller ej (använd t.ex. is_null()), och du jämför dem bara med andra värden om de inte är NULL.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic