如何在PHP中将字符串转换为数字?

927

我想把这些值'3''2.34''0.234343'等转换成数字。在JavaScript中我们可以使用Number(),但PHP中是否有类似的方法?

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

99
读者请注意:这个问题并没有一个真正的答案 :( - Matthieu Napoli
1
@MatthieuNapoli 答案是通常情况下Php会为您解决这个问题 - 动态类型系统的一个好处。 - Kellen Stuart
18
面对不确定性和“通常”的种种羁绊。 - person27
我认为5年前我的意思是,没有一个单一的函数可以将字符串转换为正确的intfloat(当给定int时,通常不需要float)。 - Matthieu Napoli
4
@MatthieuNapoli很高兴你澄清了自己的观点,意思是有多种方法可以解决问题,而不是根本无法解决。例如在数据库操作中,类型转换非常重要。例如,在参数化PDO查询中,有时解析器难以识别它是数字而不是字符串,然后因为没有在参数步骤中将字符串转换为整数,所以最终会得到一个0放入整型字段中。 - stubsthewizard
顺便提一下,在JavaScript中,字面整数2被内部存储为Number:"JavaScript代码中的数字字面量(如37)是浮点值,而不是整数。在日常使用中没有单独的整数类型。(JavaScript现在有一个BigInt类型,但它并不是为了取代Number而设计的。37仍然是一个Number,而不是BigInt。)"因此,在JS中,Number(your_string)之所以能够实现你想要的功能,是因为其他地方的逻辑默认将2显示为"2"而不是"2.0" - ToolmakerSteve
35个回答

1
使用一元运算符(+)。例如:
$n1 = +'7';
$n2 = '2.34';
$n2 = +$n1;

var_dump($n1): 整数(7) var_dump($n2): 浮点数(2.34)


1
它将所有东西转换为数字,字母变成0。 - lisandro

1
其中一种实现方式如下:
$fileDownloadCount          =  (int) column_data_from_db;
$fileDownloadCount++;

第二行将值增加1。

0

你可以将0添加到字符串中,这样就可以将其转换为数字而不会丢失初始值。例如:

dd('0.3454545' + 0)

PHP会为您处理转换,或者如先前建议的,在字符串前添加+。


0

PHP 在一定范围内可以为您完成此操作

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

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

我不想输出它。我想将其转换并保存在一个变量中。 - Sara
1
这会自动将其转换为浮点数。PHP的松散类型转换会为您完成此操作。尽管它可能不会按照您的期望执行,因此其他具有显式转换的答案可能更适合您。 - Adrian Cornish
$str 可以包含 '5' 或 '5.258',使用 printf("%f\n", $str) 时,'5' 将输出为 5.000000(我希望它是 5),对于 5.280000(我希望它是 5.28),它包含更多的小数点。 - Sara
“这样自动转换成浮点数并没有什么用。” $num = $str; 没有改变值,当然了。而且 printf 在某个地方打印了一些东西 - 所以它仍然是一个字符串。如果你使用 sprintf,这可能更明显!在你的回答中,没有浮点值可以被提取和在其他地方使用。[同意 内部 临时是浮点数 - 但仍然不是问题的答案。如果 OP 想要 打印 原始字符串,他可以简单地执行 printf("%s\n", $str)。]” - ToolmakerSteve
没有起作用。 - Kamlesh

-2
我在一次编程面试中被问到了这个问题:“假设你正在编写 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);

感谢您尝试为问答做出贡献。但很抱歉,您提供的内容并不是问题所要求的。您的代码将整数转换为字符串,而问题是关于将字符串转换为整数的。此外,该问题也不是关于如何编写代码来执行已经可以使用语言内置功能完成的操作。 - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接