php 5,for循环没有正确显示以0开头的数字系列[重复]

Posted

技术标签:

【中文标题】php 5,for循环没有正确显示以0开头的数字系列[重复]【英文标题】:php 5, for loop not displaying correctly series of numbers that starts with 0 [duplicate] 【发布时间】:2015-02-20 14:33:49 【问题描述】:

我正在尝试获取 for 循环的结果,例如:00001, 00002, 00003, 等,但结果未显示 0's: 而我得到:1, 2, 3, 等。

这是代码:

$min = 00001;
$max = 00005;

for ($x = $min; $x <= $max; $x++) 
    echo "$x ";

【问题讨论】:

你需要使用str_pad 不只是消除前导零;任何以零开头的整数都被解释为八进制数。这意味着 0010 不代表十进制数 10,而是十进制数 8!除非您使用八进制数,否则不要在 php 整数前面加上 0。 实际上我将使用更高的值,例如 $max = 0387648 “实际上我将使用更高的值,例如$max = 0387648 - 为什么前导零?同样,正如 Erik 所述和 Rizier 在下面的回答;前导零被视为八进制。你试过里齐尔的答案吗? @narclax 你知道你可以在 mysql 中实现这一点,将前导零作为列的前导字符。有几种方法可以做到这一点,在 PHP 中也是如此。我以前见过;这有点复杂,但这可能是您需要做的。使用八进制可能不会产生预期的结果。你 100% 确定要使用八进制吗? @narclax 【参考方案1】:

只需将您的 echo 语句更改为:

echo sprintf('%05d', $x);

另外,我建议您将 $min$max 变量更改为:

$min = 1;
$max = 5;

因为如果您有前导零,那么数字将被解释为octal 数字!所以00012 不会是12 而是10

【讨论】:

因为如果你有前导零,那么数字会被解释为八进制数 - 完全正确。【参考方案2】:
<?php
$min = 00001;
$max = 00005;
for ($x = $min; $x <= $max; $x++) 
printf("%5d",$x);

?>

这是新代码

<?php
$min = 00001;
$max = 00005;
for ($x = $min; $x <= $max; $x++) 
printf("%05d",$x);
echo '<br>';

?>

【讨论】:

这不是 OP 想要的!正确阅读问题... 你正好有四个 0 因为如果你有前导零,那么数字会被解释为八进制。 @vikramsharma 这也是你的事情。【参考方案3】:

非常感谢您的帮助。通过 MySQL 做的伎俩完成了一切。只需将值更改为十进制并使用相应的 zerofill 属性分配字段大小 (7)。

现在我可以插入不带零的for 循环的计数,但数据库会为我插入它们。谢谢

【讨论】:

啊,毕竟我的链接/建议确实有帮助,太棒了! - 另一个幸福的结局 ;-)

以上是关于php 5,for循环没有正确显示以0开头的数字系列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查并验证以某个值开头的某个数字是不是可用

语句不能以 for 循环上的闭包语句开头

$.post 用 for in 显示表格

以时间间隔显示循环数据

+++++++脚本练习之for循环和if语句使用

将文件中的数据存储到数组中