PHP имеет некоторые функции, чтобы помочь с этим, в первую очередь decbin()
(https://www.php.net/manual/en/function.decbin.php), который преобразует целое число в двоичное. Затем вы можете разбить это на массив, который будет пронумерован значениями Text_
из вашего примера.
$input = 48;
$output = array_reverse(str_split(decbin($input)));
foreach ($output as $k => $v) {
echo $v ? "Text_$k".PHP_EOL : "";
}
Таким образом, decbin(48)
даст 110000
, который можно разбить на следующий массив с помощью str_split()
:
Array
(
[0] => 1
[1] => 1
[2] => 0
[3] => 0
[4] => 0
[5] => 0
)
Но вы можете видеть, что это в обратном порядке - в двоичном коде мы нумеруем биты справа налево, а не слева направо. Так что вам нужно повернуть его, используя array_reverse()
.
Тогда у вас есть хороший массив Text_ => active (1 or 0)
пар:
Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 1
[5] => 1
)