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

Converting an integer to a string in PHP

提问人:kman99 提问时间:6/24/2009 最后编辑:YanDatsiukkman99 更新时间:6/4/2022 访问量:1588998

问:

有没有办法在PHP中将整数转换为字符串?

php 字符串 类型转换 整数

评论

12赞 hakre 6/14/2012
PHP 是松散类型的。曾经是整数的东西,也可以是字符串,例如,当你(在所谓的字符串上下文中使用)时。echo
3赞 nice_dev 8/31/2015
@hakre是的,php 是松散类型的,echoing 会在字符串上下文中打印值。但这不会在内部改变变量的数据类型。因此,strval($variable) 是正确的。
3赞 hakre 8/31/2015
@Vivek:内部也不会改变。strval()$variable
4赞 nice_dev 9/1/2015
我的意思是 $variable = strval($variable);

答:

56赞 Sev 6/24/2009 #1
$foo = 5;

$foo = $foo . "";

现在是一个字符串。$foo

但是,您可能想习惯铸造。因为铸造是完成此类任务的正确方法:

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

另一种方法是用引号括起来:

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

评论

0赞 karim79 6/24/2009
太奇怪了,我们俩都选了 5 个。此外,+ 是 java。
0赞 jason 6/24/2009
我认为你在那里混淆了语言之间的串联语法。
8赞 Frank Farmer 6/24/2009
我倾向于选角,因为它让你的意图非常清楚。铸造只有一个目的:改变类型。在某些情况下,其他示例可能看起来几乎像是错误。
114赞 Sanjay Sheth 6/24/2009 #2

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

两个例子:

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

有关更多信息,请参阅有关类型杂耍的 PHP 手册。

4赞 Andrew Dunkman 6/24/2009 #3

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

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

或者,更准确地说,你可以将整数转换为字符串:

$integer = 93;
$stringedInt = (string) $integer;
965赞 Chris Thompson 6/24/2009 #4

您可以使用 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

// The two examples above have the same end value...
// ... And so do the two below

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

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

评论

2赞 Chris Thompson 6/24/2009
好点子。我在那里投入了一些mysql_escape_string功能来清理它。
6赞 Kzqai 9/9/2011
编辑自 mysql_escape_string 被弃用,因为它忽略了字符集。
7赞 chacham15 1/12/2015
@Kzqai对于任何看过这个例子的人来说,为了避免注入攻击,我想说的是,放弃你对字符串转义的尝试,而使用准备好的语句
26赞 Chris Thompson 1/13/2015
5 年后,我终于删除了 SQL 示例,因为它没有必要回答问题并造成混淆。
8赞 danielson317 10/27/2018
警告!!如果您传入某些数字,php 将在转换为字符串时将它们四舍五入: 返回 。strval(0.999999997)1
0赞 merkuro 6/24/2009 #5

我想说这取决于上下文。strval() 或强制转换运算符 (string) 可以使用。然而,在大多数情况下,PHP会决定什么对你有好处,例如,如果你将它与echo或printf一起使用。

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

评论

1赞 itsjavi 6/22/2016
“在大多数情况下,PHP会决定什么对你有好处”太棒了:,)
13赞 Alana Storm 6/24/2009 #6

在 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";

我不推荐最后一个选项,但我在野外看到过依赖于这种行为的代码,所以我想我会把它传递出去。

2赞 troelskn 6/24/2009 #7

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

评论

1赞 Elzo Valugi 8/19/2016
我不认为PHP会一直强制一个整数字符串。它会这样做,但不会这样做 所有这些转换函数都非常有用,许多程序员越来越多地检查它们的类型。strlen(12345);$x = 12345; echo $x[2];
-5赞 Arthur Kushman 1/21/2011 #8
$integer = 93;
$stringedInt = $integer.'';

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

评论

2赞 Arthur Kushman 1/21/2011
$foo = 5;$foo = “$foo” 在 PHP 中使用 '' 的内存非常满。
0赞 JEX 10/24/2021
你说的浪费是什么意思?''' $foo = 5;$foo = “$foo”;''' 这段代码只是用字符串覆盖 int 值,当然,这不是答案,但有什么浪费?
12赞 gewel 2/6/2013 #9

用:

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

或者它可能是:

$string = (string)$intValue;

艺术

settype($intValue, 'string');
5赞 UserBSS1 3/27/2013 #10

有多种可能的转换方式:

$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123
10赞 Microprocessor Cat 4/11/2015 #11

警告:以下答案基于错误的前提。将 0 数字转换为字符串始终返回字符串“0”,从而使提供的代码变得多余。

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

请尝试以下操作:

    $v = 0;

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

评论

2赞 Microprocessor Cat 4/11/2015
请注意,这个问题特别说的是“转换整数”,而不是浮点数。:)
1赞 nintyfan 12/26/2018
请纠正错误。正确的形式应该是:$s = (string)$v ?(字符串)$v : “0”;
1赞 Lacek 6/15/2021
var_dump((string)0);在PHP 5.5.9(发布时间:2014年2月6日)上为我打印。你得到的是哪个版本的 PHP“如果值为零,则为空字符串”?string(1) "0"
-3赞 Iyti 11/10/2015 #12

您可以简单地使用以下命令:

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

评论

1赞 Marwan Salim 10/2/2020
该函数从字符串的两边删除空格和其他预定义字符 虽然它返回字符串,但这是一种不好的做法。最好使用或也许。trim()strval()number_format()
0赞 Kaushik shrimali 1/23/2019 #13
$amount = 2351.25;
$str_amount = "2351.25";

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

所以 echo 将是返回字符串

评论

0赞 Peter Mortensen 9/13/2019
Re “string”:字面意思还是类型?还是别的什么?你能说得更清楚吗(通过编辑你的答案)?
0赞 Kaushik shrimali 9/13/2019
感谢 Peter Mortensen 的comment@ 这是返回类型“STRING”,表示您的值应该转换为新变量中的字符串。所以这就是我编辑字符串的原因
0赞 temur Usmonaliyev 2/7/2022 #14

我的情况:

echo strval("12"); => 12
echo strval("0"); => "0"

我在工作......

$a = "12";
$b = "0";
echo $a * 1; => 12
echo $b * 1; => 0

评论

1赞 Community 2/7/2022
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Your Common Sense 6/4/2022
这似乎不是一个答案,而是一个问题。
-1赞 Joseph Tam 3/11/2022 #15

我尝试了上述所有方法,但是当我将值嵌入到另一个字符串中时,我遇到了“数组到字符串转换”错误。如果您对我有同样的问题,请尝试 implode() 函数。 例:

$integer = 0;    
$id = implode($integer);    
$text = "Your user ID is: ".$id ;

评论

1赞 Your Common Sense 6/4/2022
此代码没有意义并返回错误,Argument #1 ($pieces) must be of type array, string given