som schaefer siger sammenligning er ==, så hvis jeg går ud fra at det er det du mener i dine eksempler, så:
if ($variabel) { bla bla } vil teste om $variabel er sand, dvs sige om den er andet end 0 eller false visse php-indstallationer vil her give en warning hvis der ikke er nogen variabel der hedder $variabel
if (isset($variabel)) { bla bla } tester om der er en variabel der hedder $variabel
if (!$variabel=="") { bla bla } vil teste om $variabel er noget andet end en tom streng
if ($variabel=="true") { bla bla } / if (!$variabel="false") vil teste om $variabel indeholder strengen "true" hhv "false"
if (!$variabel=="0") { bla bla } vil teste om $variabel er noget andet end strengen "0"
if ($variabel) { // udføres hvis $variabel eksisterer OG har en værdi der ikke er 0 eller false eller null eller en tom streng bla bla }
if (isset($variabel)) { // udføres hvis $variabel eksisterer, uanset hvilken værdi den har bla bla }
//de næste fire kræver et dobbelt lighedstegn. // ellers en det en assignment af konstanten til $wariabel.
if (!$variabel=="") { // du kan ikke assigne til en expression. Det SKAL være == her. // !$variabel udregnes til 'det omvendte af $variabel set som bolsk værdi. // hvis $variabel = "noget" er den omvendte bloske værdi false // hvis $variabel = "" (tom streng) er den omvendte bolske værdi true // false == "" udregnes til true // true == "" udregnes til false bla bla } //
if ($variabel="true") { // denne er mulig // strengen "true" gives som værdi til variabelen og if-sætningen ser betingelsen som opyldt fordi "true" ikke er en tom streng bla bla } if (!$variabel="false") { // ikke mulig !$variabel er en expression og kan ikke assignes til. så: if (!$variabel=="false") { // igen efter reglerne ovenfor // false == "false" giver false fordi "false" ikke er en tom streng // true == "false" giver true fordi "false" ikke er en tom streng // Jep den er lidt uventet for mange. det handler om datatyper. alt med anførselstegn om er en streng der indeholder bogstaver. ikke det de bogstaver beskriver.
if (!$variabel=="0") { bla bla } // som ovenfor men mere usikker, du risikerer at php først vælger at konvertere strengen "0" til tallet 0 der så derefter svarer til false når der sammenlignes.
if ( $var ) giver en advarsel hvis der ikke finden noges $var variabel. "du præver at bruge en variabel der ikke findes". Desværee har mange sat deres errorlevel til ikke at udskrive advarsler.
if ($filtyper_tilladt && !in_array($filtype, $filtyper_tilladt)) { echo "<p>Desværre, filtypen '$filtype' kan ikke uploades. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'.</p>"; $fejl="1" }
Hvor det er valgfrit om de vil angive et array, der indeholder de tilladte filtyper, hvad bør jeg så checke med ? If ($var) giver vel en fejl hvis de ikke sætte den, eller hvad ?
Jeg vil til hver en tid bruge if ( isset($variabel) )
Detteher et et af de (mange) steder hvor php (og javascript og perl og ...) tilbyder at tænke for dig. at gætte hvad det egentlig er du mener, selvom du ikke gør dig ulejlighed med specifikt at sige det.
men så sker det jo de gætter galt og gør noget uventet. Sådan nogen fejl kan være meget besværlige at finde.
Så jeg prøver altid at sige 'nej tak' til det tilbud, medmindre jeg virkelig ved hvad jeg laver og hvilke alternative situationer der vil opstå.
Det har også den fordel at når en anden programmør skal læse og forstå et program jeg skriver er der så mange færre muligheder for at han misforstår det :-))
De vil faktisk teste to forskellige ting. !$variabel tvinger $variabel til at konvertere til en boolsk værdi. med din != operator er datatypen på $variabel's indhold med til at bestemme hvordan der skal konverteres.
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.