我想将这些类型的值“3”、“2.34”、“0.234343”等转换为数字。在JavaScript中,我们可以使用Number(),但在PHP中有没有类似的方法?

Input             Output
'2'               2
'2.34'            2.34
'0.3454545'       0.3454545

当前回答

在一次编程面试中,我遇到了这样一个问题:“假设你正在编写一个内置函数,用PHP将整数转换为字符串,你会如何编写该函数”。这里有一个解决方案。

$nums = ["0","1","2","3","4","5","6","7","8","9"];
$int = 15939; 
$string = ""; 
while ($int) { 
    $string .= $nums[$int % 10]; 
    $int = (int)($int / 10); 
} 
$result = strrev($string);

其他回答

好的,所以我刚刚遇到了这个问题。我的问题是所讨论的数字/字符串具有不同的位数。有些没有小数,有些有几个。所以对我来说,使用int、float、double、intval或floatval都会根据数字给出不同的结果。

所以,简单的解决方案。。。将字符串除以服务器端的1。这会将其强制为一个数字,并保留所有数字,同时修剪不必要的0。它不漂亮,但它有效。

"your number string" / 1

Input       Output
"17"        17
"84.874"    84.874
".00234"    .00234
".123000"   .123
"032"       32

在PHP中,您可以使用intval(string)或floatval(字符串)函数将字符串转换为数字。

我一直在阅读答案,没有看到任何人提到PHP数字转换中最大的警告。

最受欢迎的答案是:

$str = "3.14"
$intstr = (int)$str // now it's a number equal to 3

太棒了。PHP进行直接铸造。但如果我们做了以下操作呢?

$str = "3.14is_trash"
$intstr = (int)$str

PHP认为这种转换有效吗?

显然是的。

PHP读取字符串,直到找到所需类型的第一个非数字字符。这意味着对于整数,数字字符是[0-9]。因此,它读取3,因为它在[0-9]字符范围内,所以它继续读取。读取。并在那里停止,因为它不在[0-9]范围内。

同样的情况也会发生,如果你被投到浮动或双倍。PHP将读取3。,然后是1,然后是4,并将在i处停止,因为它不是有效的浮点数字字符。

因此,“million”>=1000000计算结果为假,但“10000000000”>=10000计算结果为真。

另请参见:

https://www.php.net/manual/en/language.operators.comparison.php比较时如何进行转换

https://www.php.net/manual/en/language.types.string.php#language.types.string.conversion字符串如何转换为各自的数字

PHP将在限制范围内为您提供

<?php
   $str = "3.148";
   $num = $str;

   printf("%f\n", $num);
?>

实现这一目标的多种方式之一是:

$fileDownloadCount          =  (int) column_data_from_db;
$fileDownloadCount++;

第二行将值递增1。