在PHP中将整数转换为字符串


501

有没有一种方法可以将整数转换为PHP中的字符串?


8
PHP是松散类型的。曾经是整数的也可以是字符串,例如当您使用echo它(在所谓的字符串上下文中使用)时。
hakre 2012年

2
@hakre是php是松散类型的,回显将在字符串上下文中打印该值。但这不会在内部更改变量的数据类型。因此,strval($ variable)是正确的。
vivek_23

@Vivek:内部也strval()没有改变 $variable
hakre

2
我的意思是$ variable = strval($ variable);
vivek_23'9

Answers:


781

您可以使用该strval()函数将数字转换为字符串。

从维护的角度来看,它显然是您正在尝试做的事情,而不是其他一些更深奥的答案。当然,这取决于您的上下文。

$var = 5;

// Inline variable parsing
echo "I'd like {$var} waffles"; // = "I'd like 5 waffles

// String concatenation 
echo "I'd like ".$var." waffles"; // I'd like 5 waffles

// Explicit cast 
$items = (string)$var; // $items === "5";

// Function call
$items = strval($var); // $items === "5";

2
好点子。我在那里放了一些mysql_escape_string函数来清理它。
克里斯·汤普森

6
自mysql_escape_string被弃用以来,因为它忽略字符集而被编辑。
卡扎伊2011年

7
@Kzqai,适合任何查看此示例以尝试避免注入攻击的人,我想说一下放弃您转义字符串并使用准备好的语句的尝试
chacham15 2015年

22
5年后,我终于删除了SQL示例,因为没有必要回答这个问题并引起了混乱。
克里斯·汤普森

3
警告!!如果您输入某些数字,则php会在将其转换为字符串时将它们四舍五入:strval(0.999999997)return 1
danielson317

86

有很多方法可以做到这一点。

两个例子:

 $str = (string) $int;
 $str = "$int";     

有关更多信息,请参见有关类型处理的PHP手册。


25
@Jazzerus如果$ var等于0(零),则该字符串为空。有问题。
西蒙·福斯伯格

5
转换0""可能还不错。这实际上取决于应用程序。就是说,您说的很对。
WNRosenberg 2012年

2
$ f = 0; 回显“ $ f”;我可以正常工作,零仍然为零。所以我认为“ $ var”是一个聪明/有用的答案。运行9999999循环(字符串)需要0.4046459 ... sec,而“ $ var”需要0.3725229 ...没什么区别。
梅尔西(Melsi)2013年

45
$foo = 5;

$foo = $foo . "";

现在 $foo是一个字符串。

但是,您可能想习惯铸造。由于强制转换是完成此类任务的正确方法:

$foo = 5;
$foo = (string)$foo;

另一种方法是用引号封装:

$foo = 5;
$foo = "$foo"

非常奇怪,我们俩都选择了5。此外,+是Java。
karim79 2009年

我认为您正在混淆各种语言之间的串联语法。
杰森

6
我倾向于投射,只是因为它可以使您的意图非常明确。铸造只有一个目的:改变类型。在某些情况下,其他示例看起来几乎像是错误。
Frank Farmer 2009年

为我工作..很多
zeetit 2014年

10

在PHP中,有多种方法可以将整数“转换”为字符串。

传统的计算机科学方法是将变量转换为字符串:

$int = 5;
$int_as_string = (string) $int;
echo $int . ' is a '. gettype($int) . "\n";
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

您还可以利用PHP的隐式类型转换和字符串插值:

$int = 5;
echo $int . ' is a '. gettype($int) . "\n";

$int_as_string = "$int";
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

$string_int = $int.'';
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

最后,类似于上述内容,任何接受并返回字符串的函数都可以用于转换和整数。考虑以下:

$int = 5;
echo $int . ' is a '. gettype($int) . "\n";

$int_as_string = trim($int);
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

我不建议使用最后一个选项,但是我已经看到过依赖这种行为的代码,所以我想将其传递下去。


9

所有这些答案都很好,但是如果值为零,它们都会为您返回一个空字符串。

请尝试以下操作:

    $v = 0;

    $s = (string)$v ? (string)$v : "0";

2
请注意,该问题专门说“转换整数”,而不是浮点数。:)
微处理器猫

1
请更正错误。正确的格式应为:$ s =(string)$ v?(string)$ v:“ 0”;
nintyfan '18

7

采用:

$intValue = 1;
$string = sprintf('%d', $intValue);

或者可能是:

$string = (string)$intValue;

要么:

settype(&$intValue, 'string');

4

转换方式有很多:

$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123

4

您可以使用句点运算符并将一个字符串连接到它(它将类型转换为字符串):

$integer = 93;
$stringedInt = $integer . "";

或者,更正确地说,您可以只将整数类型转换为字符串:

$integer = 93;
$stringedInt = (string) $integer;

0

正如这里的答案很好地说明了,是的,有几种方法。但是,在PHP中,您实际上很少需要这样做。编写PHP的“教条方式”是依靠该语言的松散类型系统,该系统将根据需要透明地强制该类型。对于整数值,这通常没有问题。但是,您应该非常小心浮点值。


我认为PHP不会一直强迫一个整数来字符串化。它会这样做,strlen(12345);但不会这样做。$x = 12345; echo $x[2];所有这些强制转换功能非常有用,许多程序员越来越检查它们的类型。
Elzo Valugi

0

您可以简单地使用以下内容:

$intVal = 5;
$strVal = trim($intVal);

0

我会说这取决于上下文。strval()或强制转换运算符(字符串)。但是,在大多数情况下,例如,将PHP与echo或printf一起使用时,PHP将决定对您有什么好处。

一个小注意事项:die()需要一个字符串,并且不会显示任何int :)


“在大多数情况下,PHP会决定对您有什么好处”,惊人的:,)
itsjavi

0
$amount = 2351.25;
$str_amount = "2351.25";

$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount);    //string

因此,回显将是return string


重新“ 字符串 ”:字面还是类型?或者是其他东西?您能使它更清晰(通过编辑答案)吗?
彼得·莫滕森

感谢您的评论@ Peter Mortensen这是返回类型“ STRING”,表示您的值应在新变量中转换为字符串。所以这就是为什么我编辑字符串
Kaushik shrimali

-4
$integer = 93;
$stringedInt = $integer.'';

$integer = 93;
$stringedInt = $integer."";

$ foo = 5; $ foo =“ $ foo”对于PHP使用的内存极度疲劳。
亚瑟·库什曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.