[PHP]is_int en is_double doen niet wat ik wil

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

ik verveelde me, dus ben ik maar een scriptje gaan maken die machten uitrekent. Dit kan uiteraard heel simpel met de pow() functie... Maar ik wilde er een controlletje voor zetten.

Met is_int en is_double was het de bedoeling om te kijken of het ingevoerde getal(len) wel een heel getal of een komma getal waren.. Wanneer dit niet het geval was moest er een error komen, en als dit klopte moest de pow() functie zijn werk gaan doen.

Maar wat ik ook invoer in mijn invoer veld hij zegt altijd dat ik geen integer of double heb ingevoerd. Kan iemand mij uitleggen wat ik fout doe?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php 
//Voer in form het het grondgetal in en in form 2 het exponent 
if (isset($_GET['submit'])) 
{ 
    //Kijk of alle velden correct zijn ingevuld 
    if (isset($_GET['getal']) && $_GET['getal'] != "" && isset($_GET['macht']) && $_GET['macht'] != "") 
    { 
        //$getal en $macht zijn ingevuld, controlleer verder 
        if (is_int($_GET['getal']) OR is_double($_GET['getal'])) 
        { 
            //Getal is helemaal correct ingevuld 
            //Controlleer nu of $macht een int. of double is. 
            if (is_int($_GET['macht']) OR is_double($_GET['macht'])) 
            { 
                //Alles is correct ingevuld. Nu kan het uitrekenen beginnen 
                $uitkomst = pow($_GET['getal'],$_GET['macht']); 
                echo "de uitkomst van $getal tot de macht $macht is $uitkomst."; 
            } 
            else 
            { 
                //$macht is geen double of int. 
                echo "Je moet in het veld voor het macht wel een heel getal of een komma getal invoegen. Andere waardes zijn niet toegestaan. Probeer het opnieuw"; 
            }         
        } 
        else 
        { 
            //$getal is geen integer of double 
            echo "Je moet in het veld voor het grondtal wel een heel getal of een komma getal invoegen. Andere waardes zijn niet toegestaan. Probeer het opnieuw"; 
        } 
    } 
    else 
    { 
        //$getal of $macht is niet ingevuld. 
        echo "Je moet alle invoer velden wel invullen!"; 
    } 
} 
else 
{ 
    //Geef form weer 
    echo "<H1>Machten berekenen</H1>"; 
    echo "<FORM METHOD=\"get\" ACTION=\"$PHP_SELF\">"; 
    echo "Getal: <INPUT TYPE=\"text\" NAME=\"getal\"><BR>"; 
    echo "Macht: <INPUT TYPE=\"text\" NAME=\"macht\"><BR>"; 
    echo "<INPUT TYPE=\"submit\" NAME=\"submit\"><BR>"; 
    echo "</FORM>"; 
} 
?>

[ Voor 11% gewijzigd door chem op 24-07-2004 22:15 . Reden: php tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Is wat je uit $_GET haalt niet altijd een string?

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
Dat heb ik ook altijd met getallen in GET-variabelen. :/
Op de een of andere manier zal PHp dit toch altijd als string blijven zien en als output 'false' geven bij 'is_int()'...
Of je moet het op de een of andere manier goed kunnen omzetten.

BTW:
PHP:
1
2
3
<?php
echo "Met php-tags leest je code makkelijker. ;-)";
?>

[ Voor 38% gewijzigd door Joen op 24-07-2004 22:15 ]


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Hmm ik weet niet of het helpt maar ipv OR kan je ook || invullen.. Ik doe altijd || omdat ik veel problemen met OR had... :?

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

PHP:
1
is_numeric();
?

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
PHP:
1
if (strpos($_GET['str'], ',')) { /* float */ } else { /* integer */ }


voor strings? En dan evetntueel omzetten dmv (double)$string en (int)$string

Edit: kijk ook even naar is_numeric() Oops, sorry, Chem, had 't jouwe nog niet gelezen :+

[ Voor 36% gewijzigd door dingstje op 24-07-2004 22:17 ]

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
@Megamind:
Zowel '||' als 'OR' doen het zelfde dacht ik.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Heb even het volgende uitgeprobeert:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$stringint = '8';
$stringdouble = '6.99';
//$int = 8;
//$double = 8.34;

if (is_int($stringint))
  echo "var int is een int<BR>";

if (is_double($stringdouble))
  echo "var double in een double<BR>";

?>

Ik draai met PHP 5.0.0 en als is_int of is_double een stringrepresentatie binnen krijgt returnt deze een false. Volgens de manual zou je denken dat ook strings kunnen worden gecontroleerd of deze een int of double is.

[ Voor 9% gewijzigd door Sybr_E-N op 24-07-2004 22:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Megamind schreef op 24 juli 2004 @ 22:14:
Hmm ik weet niet of het helpt maar ipv OR kan je ook || invullen.. Ik doe altijd || omdat ik veel problemen met OR had... :?
Nee, dit is beide hetzelfde
Dit resulteerd in hetzelfde als wanneer ik is_int gebruik
dingstje schreef op 24 juli 2004 @ 22:15:
PHP:
1
if (strpos($_GET['str'], ',')) { /* float */ } else { /* integer */ }



voor strings? En dan evetntueel omzetten dmv (double)$string en (int)$string

Edit: kijk ook even naar is_numeric() Oops, sorry, Chem, had 't jouwe nog niet gelezen :+
Maar wat nou als iemand een 'a' invuld o.i.d? Ook niet save dus!
JeroenM_tbs schreef op 24 juli 2004 @ 22:14:
Dat heb ik ook altijd met getallen in GET-variabelen. :/
Op de een of andere manier zal PHp dit toch altijd als string blijven zien en als output 'false' geven bij 'is_int()'...
Of je moet het op de een of andere manier goed kunnen omzetten.

BTW:
PHP:
1
2
3
<?php
echo "Met php-tags leest je code makkelijker. ;-)";
?>
Ik denk dat het hier dan aan ligt.

Andere suggesties zijn nog steeds welkom!

Acties:
  • 0 Henk 'm!

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
http://nl.php.net/is_numeric
Die ook al geprobeerd zoals chem hierboven suggereerde?

Je was net ff sneller. :P

[ Voor 17% gewijzigd door Joen op 24-07-2004 22:26 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[quote]Sybr_E-N schreef op 24 juli 2004 @ 22:20:
Heb even het volgende uitgeprobeert:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$stringint = '8';
$stringdouble = '6.99';
//$int = 8;
//$double = 8.34;

if (is_int($stringint))
  echo "var int is een int<BR>";

if (is_double($stringdouble))
  echo "var double in een double<BR>";

?>

[quote]

Blijkbaar doet hij het toch niet op strings... Is er hier niet iemand die weet hoe ik een string om kan zetten naar int./double?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het probleem is opgelost!

De functie floatval() maakt van een string een int.!
Bedankt iig voor het meedenken!

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 24 juli 2004 @ 22:31:
Het probleem is opgelost!

De functie floatval() maakt van een string een int.!
Bedankt iig voor het meedenken!
nee maakt van je string een float ;), voor int moet je intval doen :), maar goed, jij wilt toch floats, als je daadwerkelijk wilt kijken of je komma getallen hebt ed

btw volgens mij kon het ook -heel vuil-
PHP:
1
$var = $var + 0;

maar goed dan is een bestaande php functie beter natuurlijk dan deze onzin :D

[ Voor 14% gewijzigd door Verwijderd op 24-07-2004 23:13 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
|| en OR zijn een tikkie anders, de prioriteiten van die tekens liggen net iets anders.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Om een string om te zetten in een float, int of wat dan ook kun je ook type casting gebruiken.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 19-09 09:59
MatHack schreef op 25 juli 2004 @ 01:00:
Om een string om te zetten in een float, int of wat dan ook kun je ook type casting gebruiken.
offtopic:
Hè, dat verhaal vergeet ik ritueel als ik in PHP bezig ben :).

zeroxcool.net - curity.eu

Pagina: 1