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

3
在下面的代码中,我尝试使用$code = (string)$code;将数字转换为字符串,但没有成功。在PHP中如何将数字转换为字符串?
$code = 087326487326;
$strlen = strlen($code);
print $strlen."<br/>";
for ($i = $strlen; $i >= 0; $i--) {
  print substr($code, 0, $i)."<br/>";
}

输出:

1
0

并且。
$code = '087326487326';
$strlen = strlen($code);
print $strlen."<br/>";
for ($i = $strlen; $i >= 0; $i--) {
  print substr($code, 0, $i)."<br/>";
}

输出:

12
087326487326
08732648732
0873264873
087326487
08732648
0873264
087326
08732
0873
087
08
0
4个回答

10
它失败了,因为它以0为前缀,使得PHP将其解释为八进制数,在解析字符串时,8不是有效的八进制数字,所以你得到了0
解决方法是使用(string)强制类型转换或strval()函数,但你需要从$code的定义中删除前导零。
$code = 87326487326;
var_dump( $code, (string) $code, strval( $code));

这将在 x64 计算机上输出:
int(87326487326) string(11) "87326487326" string(11) "87326487326" 

1

我喜欢这种类型转换的方式,如果你有的话。

$code = 087326487326;

将其转换为字符串的所有操作只需执行以下步骤:

$code = "$code";

编辑

抱歉,我有点分心,测试错了。 上面说的是真的,前导零是一场灾难。 为什么不先去掉它,然后再填充数字呢?


2
你还没试过,对吗?前导零会防止PHP变量具有正确的值。 - PhilMasteG
是的,对不起@PhilippGrassl和nickb。 - André Catita

0

你可以尝试使用类型转换,像这样

 $code = (string)58963245874;

如果要检查它,可以像下面这样打印它的类型

 echo gettype($code);

0
您可以使用以下函数将其转换为字符串:

echo strval($code);

1
这个回复对讨论有何贡献?解决方案已经在被接受的答案中提出。 - Michal J Figurski
1
好的,但它展示了将转换为字符串的清晰方式。 - w.Daya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接