ChatGPT解决这个技术问题 Extra ChatGPT

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

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

PHP 是松散类型的。曾经是整数的东西也可以是字符串,例如当您echo它时(用于所谓的字符串上下文)。
@hakre 是的 php 的类型很松散,回显会在 string context 中打印值。但这不会在内部更改变量的数据类型。因此, strval($variable) 是正确的。
@Vivek:strval() 在内部也不会更改 $variable
我的意思是 $variable = strval($variable);

I
IPSDSILVA

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

好点子。我在那里投入了一些 mysql_escape_string 函数来清理它。
编辑因为 mysql_escape_string 已被弃用,因为它忽略了字符集。
@Kzqai 对于任何查看此示例以尝试避免注入攻击的人,我会说放弃您尝试转义字符串并使用准备好的语句
年后,我终于删除了 SQL 示例,因为没有必要回答这个问题并引入了混乱。
警告!!如果您传入某些数字,php 将在转换为字符串时对其进行四舍五入:strval(0.999999997) 返回 1
S
Sanjay Sheth

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

两个例子:

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

有关更多信息,请参阅 Types Juggling 上的 PHP 手册。


P
Peter Mortensen
$foo = 5;

$foo = $foo . "";

现在 $foo 是一个字符串。

但是,您可能想习惯投射。由于铸造是完成此类事情的正确方法:

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

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

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

太奇怪了,我们都选择了 5。另外,+ 是 java。
我认为你在那里混合了语言之间的连接语法。
我倾向于选角,只是因为它让你的意图非常清楚。铸造只有一个目的:改变类型。在某些情况下,其他示例几乎看起来像是错误。
P
Peter Mortensen

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

我不推荐最后的选择,但我在野外看到了依赖这种行为的代码,所以我想我会把它传递下去。


Y
Your Common Sense

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

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

尝试以下操作:

    $v = 0;

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

请注意,该问题专门说“转换整数”,而不是浮点数。 :)
请改正错误。正确的形式应该是: $s = (string)$v ? (字符串)$v:“0”;
var_dump((string)0); 在 PHP 5.5.9(发布时间:2014 年 2 月 6 日)上为我打印 string(1) "0"。哪个版本的 PHP 得到“如果值为 0,则为空字符串”?
Y
Your Common Sense

利用:

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

或者它可能是:

$string = (string)$intValue;

或者:

settype($intValue, 'string');

U
UserBSS1

有多种可能的转换方式:

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

P
Peter Mortensen

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

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

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

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

P
Peter Mortensen

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


我不认为 PHP 会一直强制将整数转换为字符串。它会为 strlen(12345); 而不是 $x = 12345; echo $x[2]; 所有这些转换函数都非常有用,并且许多程序员越来越多地检查他们的类型。
P
Peter Mortensen

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

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


“在大多数情况下,PHP 会决定什么对你有好处”太棒了 :,)
K
Kaushik shrimali
$amount = 2351.25;
$str_amount = "2351.25";

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

所以回显将是返回字符串。


Re "string":字面意思还是类型?或者是其他东西?你能说得更清楚(通过editing your answer)吗?
感谢评论@ Peter Mortensen 这是返回类型“STRING”意味着您的值应该转换为新变量中的字符串。所以这就是我编辑字符串的原因
Y
Your Common Sense

我的情况 :

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

我在工作 ...

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


正如目前所写的那样,您的答案尚不清楚。请edit添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以找到有关如何写出好答案的更多信息in the help center
这似乎不是一个答案,而是一个问题。
D
Dave

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

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

此代码没有意义并返回错误,Argument #1 ($pieces) must be of type array, string given
E
Elzo Valugi

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

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

trim() 函数从字符串的两侧删除空格和其他预定义字符虽然它返回字符串,但它是一个不好的做法。最好使用 strval()number_format()
p
paradox
$num = 10;
"'".$num."'"

尝试这个


P
Peter Mortensen
$integer = 93;
$stringedInt = $integer.'';

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

$foo = 5; $foo = "$foo" 非常适合在 PHP 中使用 '' 的内存。
你说的浪费是什么意思? ``` $foo = 5; $foo = "$foo"; ``` 这段代码只是用字符串覆盖int值,当然不是答案,浪费什么?