I’m having to pass 3 variables (int) within a single numeric string called $id. To do this I’m creating $id using padding which I can then explode to get the variables. It has to be numeric otherwise I’d use underscores between the variables. I’m using eleven zeros as padding as I know the variables won’t have that many zeros. So currently if I have:
$int_one = 1;
$int_two = 2;
$int_three = 3;
That would be:
$id = "1000000000002000000000003";
To create the new Id I use:
$id = $int_one . "00000000000" . $int_two . "00000000000" . $int_three;
And to separate the Id I use:
$int_one = 0;
$int_two = 0;
$int_three = 0;
if (strpos($id,"00000000000") !== false) {
$id = strrev($id); // Reversed so 0's in int's don't get counted
$id = explode("00000000000", $id);
// Set numbers back the right way
$int_one = strrev($id[2]);
$int_two = strrev($id[1]);
$int_three = strrev($id[0]);
}
This runs into problems when an individual variables is 0. Is there a way to overcome this or does it need a major rethink?
EDIT: $id is supposed to be a numeric string not int
Needs to handle int variables between 0 – 2147483647
You can just use some string magic to assure that no number has more than one zero in a row, and delimit the values using ’00’. This generates a numeric string that can be uniquely decoded no matter the size or composition of the ints.