有没有办法在 PHP 中将整数转换为字符串?
echo
它时(用于所谓的字符串上下文)。
strval()
在内部也不会更改 $variable
。
您可以使用 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";
$foo = 5;
$foo = $foo . "";
现在 $foo
是一个字符串。
但是,您可能想习惯投射。由于铸造是完成此类事情的正确方法:
$foo = 5;
$foo = (string)$foo;
另一种方法是用引号封装:
$foo = 5;
$foo = "$foo"
在 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";
我不推荐最后的选择,但我在野外看到了依赖这种行为的代码,所以我想我会把它传递下去。
警告:以下答案基于错误的前提。将 0 数字转换为字符串始终返回字符串“0”,从而使提供的代码变得多余。
所有这些答案都很棒,但是如果值为零,它们都会返回一个空字符串。
尝试以下操作:
$v = 0;
$s = (string)$v ? (string)$v : "0";
var_dump((string)0);
在 PHP 5.5.9(发布时间:2014 年 2 月 6 日)上为我打印 string(1) "0"
。哪个版本的 PHP 得到“如果值为 0,则为空字符串”?
利用:
$intValue = 1;
$string = sprintf('%d', $intValue);
或者它可能是:
$string = (string)$intValue;
或者:
settype($intValue, 'string');
有多种可能的转换方式:
$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123
您可以使用句点运算符并将字符串连接到它(并且它将被强制转换为字符串):
$integer = 93;
$stringedInt = $integer . "";
或者,更准确地说,您可以将整数类型转换为字符串:
$integer = 93;
$stringedInt = (string) $integer;
正如这里的答案很好地证明了,是的,有几种方法。但是,在 PHP 中,您实际上很少需要这样做。编写 PHP 的“教条方式”是依赖于该语言的松散类型系统,它会根据需要透明地强制类型。对于整数值,这通常没有问题。不过,您应该非常小心浮点值。
strlen(12345);
而不是 $x = 12345; echo $x[2];
所有这些转换函数都非常有用,并且许多程序员越来越多地检查他们的类型。
我会说这取决于上下文。可以使用 strval() 或强制转换运算符(字符串)。但是,在大多数情况下,PHP 会决定什么对您有好处,例如,如果您将它与 echo 或 printf 一起使用...
一个小提示: die() 需要一个字符串并且不会显示任何 int :)
$amount = 2351.25;
$str_amount = "2351.25";
$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount); //string
所以回显将是返回字符串。
我的情况 :
echo strval("12"); => 12
echo strval("0"); => "0"
我在工作 ...
$a = "12";
$b = "0";
echo $a * 1; => 12
echo $b * 1; => 0
我尝试了上述所有方法,但是当我将值嵌入另一个字符串时出现“数组到字符串转换”错误。如果你和我有同样的问题,试试 implode() 函数。例子:
$integer = 0;
$id = implode($integer);
$text = "Your user ID is: ".$id ;
Argument #1 ($pieces) must be of type array, string given
您可以简单地使用以下内容:
$intVal = 5;
$strVal = trim($intVal);
trim()
函数从字符串的两侧删除空格和其他预定义字符虽然它返回字符串,但它是一个不好的做法。最好使用 strval()
或 number_format()
。
$num = 10;
"'".$num."'"
尝试这个
$integer = 93;
$stringedInt = $integer.'';
比
$integer = 93;
$stringedInt = $integer."";
strval(0.999999997)
返回1
。