FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Har stött på en ovanlig sätt att använda utropstecknet (!) som används som negerande operator i PHP.
I en kodbit som jag hittade http://sourceforge.net/projects/phpexcelreader/ upptäcker jag dubbla utropstecken före vissa uttryck. Det skulle bli en dubbel negation men det verkar lite onödigt. Effekten borde bli likadan med en enkel typecasting (bool)$expression eller? Så här ser det ut på en hel del ställen: Kod:
return !!$this->colInfo[$sheet][$col]['hidden']; |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Bara ett inlägg till!
|
Ja, effekten borde bli densamma som en typecast till bool. Jag har sett liknande ett par gånger tidigare. Vill du verkligen förvirra nästa programmerare slänger du på några utropstecken till!
Tydligast är annars att skriva just (bool) så det blir tydligt vad som händer. Vid en skumläsning kanske någon missar att det är två utropstecken, eller blir lika förvirrad som du angående syftet med koden. |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
Ja, såg för gräsligt ut så jag körde sök och ersätt på skiten.
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Har WN som tidsfördriv
|
Kanske inte samma sak, men kan det inte vara så att man försäkrar sig om att den inte får finnas, ungefär som
Kod:
if $apa === 0 |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Administratör
|
Nej, inte samma sak. === kollar om värdena är identiska, dvs typ int med värdet 0 i ditt fall. ! jämför mot något av värdena som PHP tycker motsvarar false, dvs tom sträng, false, 0, odefinierad variabel osv. Som redan sagts skulle en (bool)$var ge samma resultat, men då skulle man trevligt nog kunna se resultatet utan att spärra upp ögonen rejält.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Den används inte i frågesatser utan vid tilldelning av värden. Så jag antar att det är ett sätt att sätta typ på variabeln.
Eftersom skriptet ifråga jobbar mycket med att iterera över arrayer och författarna hoppat över den fina funktionen isset() så får man ett par ton notices om missade index när man kör. Blir till att skriva om och göra rätt. Det är nackdelen med att använda färdiga skript, man måste skriva om dem för att de ska fungera som man vill. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Administratör
|
Citat:
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Klarade millennium-buggen
|
Jag vill inga notices ha. Rent och snyggt ska det vara i loggarna.
Dessutom ska jag tydligen from php 5.3 kunna skriva $resultat = (isset($variabel)) ? : $default; istället för $resultat = (isset($variabel)) ? $variabel : $default; Alltid en förbättring. |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Supermoderator
|
Citat:
![]()
__________________
Jonny Zetterström se.linkedin.com/in/jonnyz | bjz.se | sajthotellet.com | kalsongkungen.se | zretail.se | zetterstromnetworks.se | webbhotellsguide.se | ekonominyheter24.se | nyamobiltelefoner.se | gapskratt.se | antivirusguiden.se | jonny.nu |
||
![]() |
![]() |
Svara |
|
|