我正在使用具有一串以前置0开头的序列号的数据库。
因此,序列号可能类似于00032432或56332432。
PHP的问题是我不了解八进制的转换系统如何工作。
一个特定的示例是,我试图将所有这些基于整数的数字与字符串进行转换和比较。
是否可以将八进制(例如00234)转换为类似“ 00234”的字符串,以便进行比较?
编辑-添加特定示例。我希望能够在如下所示的序列上运行str函数。
$serial = 00032432; // coming from DB
if(substr($serial, 0, 1) == '0') {
// do something
}
Run Code Online (Sandbox Code Playgroud)
当您使用进行转换时(string) $number,您总是会得到一个以十进制为底的字符串,无论您是以八进制模式还是以十进制模式编写数字都没有关系,一个int就是一个int,它本身也没有底。这是他的字符串表示形式,必须使用基数来解释。
您可以通过以下方式获取数字的八进制字符串表示形式:
$str = base_convert((string) 00032432, 10, 8);
Run Code Online (Sandbox Code Playgroud)
或以十进制表示形式给出数字:
$str = base_convert((string) 13594, 10, 8);
Run Code Online (Sandbox Code Playgroud)
或者,更简洁但不太清楚:
$str = base_convert(00032432, 10, 8);
$str = base_convert(13594, 10, 8);
Run Code Online (Sandbox Code Playgroud)
最后,字符串转换是隐式进行的。这些示例给出的结果均为$ str =“ 32432”。
base_convert将数字的字符串表示形式从一个基数转换为另一个
如果您还希望字符串中包含零,则可以通过简单的数学运算将其添加。
希望这可以帮到你。