Avatar billede dennism Nybegynder
18. april 2006 - 21:24 Der er 28 kommentarer og
1 løsning

PHP: is_nan?

Hvorfor virker denne ikke:
is_nan($_POST[size_ftp)

Ref.:
http://dk2.php.net/manual/da/function.is-nan.php
Avatar billede erikjacobsen Ekspert
18. april 2006 - 21:26 #1
Prøv at læse første kommentar på det link du har givet. Der står hvorfor.

Hvad er det du vil?
Avatar billede dennism Nybegynder
18. april 2006 - 21:26 #2
Vil teste om min variabel er et nummer! Den skal gerne returnere sand, hvis det IKKE er et nummer.
Avatar billede erikjacobsen Ekspert
18. april 2006 - 21:28 #3
Og hvad forstår du ved et nummer?
Avatar billede dennism Nybegynder
18. april 2006 - 21:28 #4
Et heltal :)
Avatar billede duejensen Nybegynder
18. april 2006 - 21:29 #5
tror du ikke du skulle have skrevet

is_nan($_POST['size_ftp'])
Avatar billede dennism Nybegynder
18. april 2006 - 21:33 #6
is_nan ser ikke ud til at virke helt!
Avatar billede erikjacobsen Ekspert
18. april 2006 - 21:33 #7
Det var nok en skrivefejl, og gør ingen forskel.

if (!preg_match('/^[0-9]+$/',$POST['size_ftp'])) {
  print "Der er krymmelyrer i dit tal";
}
Avatar billede erikjacobsen Ekspert
18. april 2006 - 21:34 #8
Ehm, is_nan virker perfekt til det den skal bruges til - og det er ikke at tjekke om en streng består af cifre, der vil udgøre et heltal.
Avatar billede cyberjelle Nybegynder
18. april 2006 - 21:36 #9
Du kan bruge ctype, hvis det er aktiveret.
http://dk.php.net/manual/da/function.ctype-digit.php
Avatar billede dennism Nybegynder
18. april 2006 - 21:45 #10
Tak, smider du et svar erik?
Avatar billede erikjacobsen Ekspert
18. april 2006 - 21:48 #11
Nej tak. ctype_digit er også en mulighed, når det er så simpelt som her. Regulære udtryk giver lidt flere muligheder - fx ikke tillade foranstillede 0'er. Men så er vi nok "af-emnet" her.
Avatar billede webstuff Nybegynder
18. april 2006 - 21:51 #12
is_numeric() tjekker om en variabel er et tal:

if(is_numeric($_POST['size_ftp'])){
//Her bliver returneret SAND
} else {
// Her returneres FALSK
}
Avatar billede erikjacobsen Ekspert
18. april 2006 - 21:52 #13
Nej, webstuff - det er ikke det spørgeren ønsker.
Avatar billede webstuff Nybegynder
18. april 2006 - 22:17 #14
Han siger:
"Vil teste om min variabel er et nummer! Den skal gerne returnere sand, hvis det IKKE er et nummer."

Så min if() skal se sådan her ud: (manglede et !).

if(!is_numeric($_POST['size_ftp'])){
//Her bliver returneret SAND
} else {
// Her returneres FALSK
}

Enten er det rigtigt - eller også har jeg misforstået det her spørgsmål og skal bare skynde mig væk ;o)
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:19 #15
Nej, bliv da så længe at du ser spørgeren uddybende kommentar længere nede.
Avatar billede duejensen Nybegynder
18. april 2006 - 22:20 #16
webstuff, men han siger også at han ved et nummer forstår et heltal.

både is_nan og is_numeric opfatter decimal tal som nummerisk, derfor giver din løsning ikke det rigtige.
Avatar billede duejensen Nybegynder
18. april 2006 - 22:22 #17
erikjacobsen, nåede ikke at se din kommentar, men nu har vi vist skåret det ud i pap :-)
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:24 #18
duejensen: din bemærkning om is_nan er forkert - den har intet med strenge af cifre at gøre. Men ellers er vi da enige ;)
Avatar billede duejensen Nybegynder
18. april 2006 - 22:29 #19
erikjacobsen: du har ret, jeg var ved at hoppe i samme fælde som spørgeren.
Avatar billede dennism Nybegynder
18. april 2006 - 22:30 #20
Tak for hjælpen. Hvad gør vi med point her?
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:31 #21
Jeg samler slet ikke på point, tak.
Avatar billede duejensen Nybegynder
18. april 2006 - 22:33 #22
dennism, behold du selv pointene.

Den eneste der reelt har givet dig det rigtige svar er erik, og han ønsker vist ikke pointene.
Avatar billede dennism Nybegynder
18. april 2006 - 22:36 #23
.lukker.

tak
Avatar billede cyberjelle Nybegynder
18. april 2006 - 22:40 #24
TJaaa... Helt forkert var mit svar vidst heller ikke ;)
Men behold du dem bare..
Avatar billede fangel Nybegynder
19. april 2006 - 13:21 #25
lige en "hmm, hvorfor ikke" kommentar.. der findes også is_int() / is_integer()..
Har ikke selv giddet afprøve.. men jeg vil da vove at påstå at de lyder som om det er hvad du leder efter.. ;) (dog negeret, men plus/minus et udråbstegn spiller vel ik ind)

Morten
Avatar billede erikjacobsen Ekspert
19. april 2006 - 15:51 #26
is_int tages ikke på en streng, så den kan ikke bruges.
Avatar billede fangel Nybegynder
19. april 2006 - 15:54 #27
ja, tænkte nok det var for nemt - men ja.. ;) tænk hvis det havde virket.. (og ja, jeg er doven - jeg gad ik teste det)
Avatar billede erikjacobsen Ekspert
19. april 2006 - 15:58 #28
Men vi kan da lave et hack ;) Betragt følgende

    print is_int(8972)."\n";    // true
    print is_int(8972.1)."\n";  // false
    print is_int('8972')."\n";  // false
    print is_int(0+'8972')."\n"; // true

Men måske er jeg lidt gammeldags: et regulært udtryk ved man da hvad er ;))
Avatar billede fangel Nybegynder
19. april 2006 - 16:08 #29
ja.. og plus-point for at vælge preg_* funktionerne frem for ereg*.. ereg* funktionerne bliver snart sat "deprecated" og forsvinder iirc i php 6

Den endnu mere interesante (og ikke anbefalelsesværdige) er
print (intval("123") == "123"); // true
print (intval("123.2") == "123.2"); // false

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester