HOWTO · PHP

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

本文介绍如何在 PHP 中将字符串转换为数字,涵盖 `intval()`、`settype()` 和显式类型转换。

本页内容

在 PHP 中将数字字符串转换为整数,可以使用 (int) 强制转换或调用 intval();转换为浮点数则可以使用 (float) 或 floatval()。这些强制转换和函数会生成转换后的值,同时保留源字符串。若要直接更改现有变量的类型,可以使用 settype()。具体选择取决于你需要简洁的表达式、能清楚说明意图的转换函数,还是直接修改变量本身。

在 PHP 中使用显式类型转换将字符串转换为数字

显式类型转换会根据括号中的类型生成转换后的值。使用 (int) 转换为整数,或使用 (float) 转换为浮点数。当你在使用值的位置就能确定所需类型时,这是一种直接的做法。下面的独立示例分别转换一个整数形式和一个小数形式的数字字符串:

<?php
$integer = (int) "10";
$decimal = (float) "8.1";

echo $integer, "\n", $decimal, "\n";
10
8.1

如示例所示,可以将强制转换表达式赋给新变量,也可以在任何接受表达式的位置直接使用它。将结果赋给 $integer 或 $decimal 不会改变原始字面值或源变量;如果有意替换原值,也可以继续使用同一个变量名。结果需要是整数时选择 (int),需要保留小数部分时选择 (float)。这些示例使用的是数字字符串,并未说明强制转换对其他格式输入的处理方式。

在 PHP 中使用 intval() 函数将字符串转换为数字

intval() 函数返回整数值。若要得到浮点数,可以使用 floatval()。这些命名函数能在表达式中明确表示转换意图;在代码中,它们有时比强制转换更易读。两者都会返回转换后的值,因此将结果存入另一个变量可以保留原字符串:

<?php
$integer = intval("53");
$decimal = floatval("25.3");

echo $integer, "\n", $decimal, "\n";
53
25.3

整数转换使用 intval(),浮点数转换使用 floatval()。选择强制转换还是对应函数,主要看哪种写法更能清楚表达意图;这里的两个示例都会将数字字符串转换为所需类型。除非你有意将返回值赋回同一个变量,否则赋值不会替换源字符串。本示例不涉及包含其他字符的字符串如何解析。

在 PHP 中使用 settype() 函数将字符串转换为数字

settype() 函数接收一个变量和目标类型名称。它会直接更改该变量,而不是返回一个单独的转换值。要将数字字符串转换为整数,请将目标类型设为 integer:

<?php
$value = "45";
settype($value, "integer");

echo $value, "\n";
45

调用后,$value 保存的是转换后的值;原先赋给该变量的字符串不再能通过 $value 访问。如果需要同时保留字符串和值,可以将字符串留在一个变量中,并把另一个变量传给 settype();也可以使用强制转换或转换函数,将结果单独赋值。适合直接更改现有变量时使用 settype();如果要在不更改源变量的情况下赋值或使用转换后的值,则可使用 (int)、(float)、intval() 或 floatval()。此示例仅展示如何将所示数字字符串转换为整数。