Working with PHP Octals and String conversions

octal, php, string

Solution

When you convert with `(string) $number`, you always get a string in decimal base, it doesn't matter if you write the number in octal mode or in decimal mode, an int is an int and it has not itself a base. It's his string representation that have to be interpreted with a base.

You can get the octal string representation of a number in this way:

$str = base_convert((string) 00032432, 10, 8);

or giving the number in decimal rep:

$str = base_convert((string) 13594, 10, 8);    

or, more concisely but less clearly:

 $str = base_convert(00032432, 10, 8);
 $str = base_convert(13594, 10, 8);

In the last the string conversion is made implicitly. The examples give all as result $str = "32432".

base_convert converts a string representation of a number from a base to another

If you want also the zeros in your string, you can add them with simple math.

Hope this can help you.

Problem

I'm working with a database that has a bunch of serial numbers that are prefixed with leading 0's. So a serial number can look like 00032432 or 56332432. Problem is with PHP I don't understand how the conversion system with octals works. A specific example is that I'm trying to convert and compare all of these integer based numbers with strings. Is it possible to convert an octal, such as 00234 to a string like "00234" so that I can compare it? edit - adding a specific example. I would like to be able to run str functions on the serial like below. ``` $serial = 00032432; // coming from DB if(substr($serial, 0, 1) == '0') { // do something } ```

Original source