【问题标题】:PHP - How to convert an integer number with leading zeros to string? [duplicate]PHP - 如何将带前导零的整数转换为字符串? [复制]
【发布时间】:2017-04-09 20:29:56
【问题描述】:

我想在保持前导0 的同时将整数转换为字符串。

这在PHP 中可行吗?

$num = 0000003;

echo $num; // output: 3

echo (string)$num; // output: 3

// Wanted output: "0000003"

编辑

我之前在 SO 中阅读了最多的问题,但我很好奇是否有可能保留 0 并在运行时将其转换为字符串,例如上面的代码示例 echo (string)$num;

【问题讨论】:

  • 简单地说:你不能。您需要使用str_pad 参见@diiN_ 的链接
  • @MichaelHirschler - 所以不可能将前导零的整数转换为字符串?
  • @aldanux 重点是 PHP 或任何其他语言不存储带前导零的整数
  • @aldanux 仅仅因为你写了$num = 00003; 并不意味着PHP 已经存储了前导零。它以3 的形式存储在内存中,因为整数中的前导零无关

标签: php


【解决方案1】:

你不能。 运行时中的0000003只是3

您可以使用 str_pad 手动添加 zeros,但您必须知道目标字符串 length

str_pad((string)$num, $targetLenght, '0', STR_PAD_LEFT)

【讨论】:

  • 不确定为什么会受到如此多的滥用?除非这不是答案的第一个版本
  • 我刚刚在 2/3 分钟后添加了有关 str_pad 的信息。第一个版本只有大约 3 === 0000003
  • 啊,最快的答案好答案的区别显然是3票否决
【解决方案2】:

您必须将数字实例化为字符串:

$num = "0000003";

如果您将其实例化为数字,它将被视为数字,您的 0 将丢失。

【讨论】:

  • 谢谢.. 我知道但我想要的是将它作为字符串 00003 转换为 "00003"
  • 您的 00003 来自哪里?您不能直接转换它,但如果它是从 DB 或输入中读取的,也许您可​​以将其读取为字符串。
  • 在一个函数中例如:do_something(00003);之前我不能影响输入
  • 不,你不能,但 00003 不只是神奇地出现,如果这是 php 生成的,它将是 3 或“00003”而不是 00003,因为数字 00003 根本不存在。如果那是一些用户或数据库输入,则必须在读取时处理。顺便说一句,php 总是会从输入或数据库中读取未知格式的 00003 作为字符串。您能否扩展您的代码示例,向我们展示 00003 的来源?
  • 看到的是,就像 RiggsFolly 在评论中提到的那样,数字 00003 根本不存在,一旦存储在 mem 中,它将被存储为 3 或“00003”(取决于如何它已创建)。
【解决方案3】:

你可以使用 strpad 来做到这一点:

str_pad($id , 8 , "0" , STR_PAD_LEFT);

这将使字符串长度为 8 个字符,用整数 $id 在左侧填充零;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多