Noble Skrevet 25. januar 2010 Del Skrevet 25. januar 2010 Er det mulig å sjekke om $_GET/$_POST['variabal'] er NULL? Ikke 0, men NULL. Har en loop som skal kjøre dersom det ikke er sendt en variabel over GET/POST. Lenke til kommentar
Jonas Skrevet 25. januar 2010 Del Skrevet 25. januar 2010 (endret) $_POST['variabal'] === null evt. is_null ( $_POST['variabal'] ) eller !array_key_exists ( 'variabel', $_POST ). Endret 25. januar 2010 av Jonas Lenke til kommentar
BlueEAGLE Skrevet 25. januar 2010 Del Skrevet 25. januar 2010 Det du vil bruke er nok is_set() Hvis du sjekker om en variabel som ikke er definert er satt til null med feks "if($var === null)" så skal PHP gi en notice med full feilrapportering. Det skal den ikke om du sjekker den med is_set(). Lenke til kommentar
Jonas Skrevet 26. januar 2010 Del Skrevet 26. januar 2010 (endret) Det du vil bruke er nok is_set() is_set? Jeg tror ikke jeg kan huske sist man kunne skrive det med understrek, fungerer det i det hele tatt i noen versjoner? Trådstarter spør for øvrig om indekser og hvorvidt de er satt, ikke om variabelen er satt. Enorm forskjell. Er man ute etter å sjekke om en variabel er satt, så bruker man selvfølgelig isset, men dersom man er ute etter en indeks, så er array_key_exists, som navnet tilsier, veien å gå. Noe annet blir rett og slett homofilt og ved stor nok grad kan det smitte over på alle som titter på koden. Endret 26. januar 2010 av Jonas Lenke til kommentar
TheClown Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 (endret) isset skrives uten understrek $_POST['variabal'] === null er vel det mest korrekte? Endret 27. januar 2010 av TheClown Lenke til kommentar
Jonas Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 (endret) Dersom man vil sjekke om verdien faktisk er lik NULL, så er det måten, ja. Men når trådstarter ønsker å sjekke om en POST-variabel er blitt sendt, så er han egentlig ute etter å finne ut om array-indeksen eksisterer, hvilket man gjør med array_key_exists. Endret 27. januar 2010 av Jonas Lenke til kommentar
MikkelRev Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 Jeg har mange ganger brukt isset() til å sjekke om en POST eller GET var er blitt sendt, og det funker som bare det. Jeg er ikke homofil fordet. if(isset($_POST["navn"])) echo "Du heter ".$_POST["navn"]; Lenke til kommentar
BlueEAGLE Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 (endret) Dere har helt rett, det er jeg som skal henges. Takk og pris for helhetlig standard på innebygde funksjonsnavn. edit: ...og Jonas har helt rett i at array_key_exists er den minst gale funksjonen å bruke. Endret 27. januar 2010 av BlueEAGLE Lenke til kommentar
Jonas Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 Jeg er ikke homofil fordet. Ehh, I beg to differ. At det funker gjør det ikke riktig. Lenke til kommentar
MikkelRev Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 Du skulle vel ønske jeg var det ;) Greit nok at array_key_exists() er mer riktig, men isset() er ikke feil den heller. Kortere å skrive er den også. Og til og med manualen tillater å bruke den for det: "This also work for elements in arrays: " etterfulgt av et eksempel. -http://no.php.net/isset: Lenke til kommentar
Jonas Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 Det er en fundamental forskjell mellom å fungere og å være tillatt. Det er jo bakgrunnen for hele diskusjonen. Vi har allerede konstatert at det fungerer. Og kortere å skrive!? Oi oi oi, hadde det bare vært et argument. Du vet, gutta som driver i perl ville tatt deg imot med åpne armer. Jeg aner tendenser, her. Lenke til kommentar
Alex Moran Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 Det er en vesentlig forskjell på array_key_exists og isset, nemlig at isset også ser på verdien, følgelig vil resultatet bli som følger: <?php $array = array(NULL, 'test', 123); var_dump(isset($array[0])); // bool(false) var_dump(array_key_exists(0, $array)); // bool(true) Som vi ser returnerer isset() FALSE når verdien er NULL. Det viser seg også at isset() er en del raskere, men dette merkes knapt og det skal man ikke legge så altfor mye vekt på. Det er gjerne (les: alltid) andre steder at optimalisering bør gjøres. Lenke til kommentar
Ernie Skrevet 27. januar 2010 Del Skrevet 27. januar 2010 Gud hjelpe meg. Går det an å krangle om noe mer uvesentlig og samtidig klare å kalle noen for homofil (hvilket i seg selv er støtende)? Huff, nesten skammelig å lese det her I tillegg til det som er nevnt i innlegget over bør det vel også nevnes at isset er en «language construct», mens array_key_exists ikke er det. Betyr ikke så skrekkelig mye i praksis for de fleste annet enn at isset relativt sett er langt raskere enn array_key_exists (selv om det overhode ikke har noe å si i praksis siden vi snakk om kanskje 2-3µs vs. 0.2-0.3µs). Grunnen til dette er at isset er en grunnstein i PHP-parseren og kan ikke brytes ned til noe mindre. Det er rett og slett en egen operasjon på lik linje med +, -, *, /, echo, print etc. som sannsynligvis er skrevet i ren, optimalisert C (derav hastigheten). Det betyr også at array_key_exists i teorien kan benytte isset for å få utført det den skal ... Lenke til kommentar
Jonas Skrevet 28. januar 2010 Del Skrevet 28. januar 2010 (endret) Ey, jeg facepalmet og kalte han shithead, men når jeg ironisk beskriver bruker av isset for homofilt og en stor smitterisiko - så reagerer du?! Endret 28. januar 2010 av Jonas Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå