Re: [PHP] variable type - conversion/checking
[email protected] (Peter Ford)
| Newsgroups | php.general |
|---|---|
| Organization | Justcroft International Ltd |
| Message-ID | <[email protected]> |
On 15/03/13 06:21, Jim Lucas wrote: > On 3/14/2013 4:05 PM, Matijn Woudt wrote: >> On Thu, Mar 14, 2013 at 11:44 PM, Jim Lucas <[email protected]> wrote: >> >>> On 03/14/2013 11:50 AM, Samuel Lopes Grigolato wrote: >>> >>>> Something like "if (is_numeric($var)&& $var == floor($var))" will do >>>> the >>>> >>>> trick. I don't know if there's a better (more elegant) way. >>>> >>>> >>>> On Thu, Mar 14, 2013 at 3:09 PM, Matijn Woudt<[email protected]> wrote: >>>> >>>> On Thu, Mar 14, 2013 at 7:02 PM, georg<[email protected]**> >>>>> wrote: >>>>> >>>>> Hi, >>>>>> >>>>>> I have tried to find a way to check if a character string is >>>>>> possible to >>>>>> test whether it is convertible to an intger ! >>>>>> >>>>>> any suggestion ? >>>>>> >>>>>> BR georg >>>>>> >>>>> >>>>> >>>>> You could use is_numeric for that, though it also accepts floats. >>>>> >>>>> - Matijn >>>>> >>>>> >>>> >>> for that type of test I have always used this: >>> >>> if ( $val == (int)$val ) { >>> >>> http://www.php.net/manual/en/**language.types.integer.php#** >>> language.types.integer.casting<http://www.php.net/manual/en/language.types.integer.php#language.types.integer.casting> >>> >>> >>> >> I hope you're not serious about this... >> >> When comparing a string and an int, PHP will translate the string to int >> too, and of course they will always be equal then. >> So: >> $a = "abc"; >> if($a == (int)$a) echo "YES"; >> else echo "NO"; >> Will always return YES. >> >> - Matijn >> > > Hmmmm... Interesting. Looking back at my code base where I thought I was > doing that, turns out the final results were not that, but this: > > $value = "asdf1234"; > > if ( $value === (string)intval($value) ) { > > Looking back at the OP's request and after a little further searching, > it seems that there might be a better possible solution for what the OP > is requesting. > > <?php > > $values = array("asdf1234", "123.123", "123"); > > foreach ( $values AS $value ) { > > echo $value; > > if ( ctype_digit($value) ) { > echo ' - is all digits'; > } else { > echo ' - is NOT all digits'; > } > echo '<br />'.PHP_EOL; > } > > returns... > > asdf1234 - is NOT all digits > 123.123 - is NOT all digits > 123 - is all digits > > http://www.php.net/manual/en/function.ctype-digit.php > > An important note: > > This function expects a string to be useful, so for example passing in > an integer may not return the expected result. However, also note that > HTML forms will result in numeric strings and not integers. See also the > types section of the manual. > > -- > Jim > Integers can be negative too: I suspect your test would reject a leading '-'... -- Peter Ford, Developer phone: 01580 893333 fax: 01580 893399 Justcroft International Ltd. www.justcroft.com Justcroft House, High Street, Staplehurst, Kent TN12 0AH United Kingdom Registered in England and Wales: 2297906 Registered office: Stag Gates House, 63/64 The Avenue, Southampton SO17 1XS