将一个整数(当作八进制数解释时)的长度测量

3
我需要知道一个数字有多少个字符/数字。其中一些数字将具有前导零。经过阅读,我了解到,如果它有前导零,则PHP将其转换为八进制数。但我需要一种方法来避免这种情况,以及将带前导零的数字打印到屏幕上。
是否有任何简单明了的解决方法?
我不想要八进制数。我想知道它是00123还是至少123,而不是83。
理想情况下,我的期望输出是35,它是一个数字而不是字符串。
$a = 00123;
echo $a; // Returns 83
echo strlen((string)$a); // Returns 2
echo mb_strlen($a, "UTF-8"); //Returns 2

$b = "". 00123 ."";
echo strlen((string)$b);  //Returns 2
echo strlen(strval($b)); //Returns 2

你只是将它们保存为字符串吗?还是需要对它们进行计算? - Realitätsverlust
我不需要计算它们的任何值。我只需要知道有多少个字符,以便添加更多的零,直到达到8个字符。 - Jonathan Thurft
那么按照我说的做,将它们保存为字符串,这样PHP就会将它们视为字符串,并且不会从中删除任何内容,就像这样:$a = "00123";,对于计算单个数字:echo strlen(a);。这应该可以工作,至少我看不出为什么不行。 - Realitätsverlust
我相信 intval()sprintf()str_pad() 的某种组合可以解决你的问题,但我不完全确定这个问题是什么。 - r3mainer
2个回答

2
您可以使用煎煮str_pad的组合,就像这样。http://3v4l.org/TQgOq
<?php
echo str_pad(decoct(000123), 20, '0', STR_PAD_LEFT);

你可能想对一些传入的值进行审查。

0
这是完整的答案,我不喜欢在注释中写代码 :3
$a = "00123";
echo $a; // Returns 00123
echo strlen($a); // Returns 5
echo mb_strlen($a, "UTF-8"); //Returns 5

$b = "". 00123 .""; //unnecessary
$b = $a; //easier
echo strlen((string)$b);  //both
echo strlen(strval($b)); //unnecessary
echo strlen($b); //returns 5

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