Закодировать массив id в число code([0,1,2,3,4])=31 Раскодировать число в массив id decode(31) = [0,1,2,3,4]
<?php
function Decode($res)
{
$ids = [];
while ($res > 0) {
$x = 1;
$y = $res;
while ($y > 0) {
$x <<= 1;
$y >>= 1;
}
$x >>= 1;
$ids[] = intval(log($x, 2));
$res -= $x;
}
return $ids;
}
<?php
function Code($ids)
{
$res = 0;
if (is_array($ids)) {
foreach ($ids as $id) {
if (is_numeric($id)) {
$res += 1 << $id;
}
}
} elseif (is_numeric($ids)) {
$res = 1 << intval($ids);
}
return $res;
}