PHP: все возможные версии двоичного числа - PullRequest
0 голосов
/ 20 октября 2018

Я определил многомерный массив $binary:

$binary = [[0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1]];

Я хочу создать функцию для отображения двоичных чисел из этого массива.

count($binary) должен определить количествоцифры в номере, в данном случае 6.

Моя цель - чтобы функция отображала все возможные варианты (в данном случае шестизначного) двоичного числа:

100000, 110000, 101000, 1001000 etc.

ЕдинственноеИдея заключается в том, чтобы создать серию циклов foreach, которые вложены друг в друга:

foreach ($binary[0] as $digit) {
     foreach ($binary[1] as $digit) {
         etc.
     }
}

однако количество массивов внутри $ binary может увеличиться, в результате вам придется настроить его вручнуюэто не то, что я ищу.

Кто-нибудь знает, как запрограммировать такую ​​функцию?

1 Ответ

0 голосов
/ 20 октября 2018

Мне кажется, что что-то общее, как эта функция, будет работать хорошо:

$length = 6;

function rangeToBase($_maxLength, $_start = 0, $_base = 2)
{
    $max = pow($_base, $_maxLength + 1) - 1;
    $range = range($_start, $max);

    if($_base != 10) {
        array_walk($range, function (&$item) use ($_base, $_maxLength) {
            $item =  str_pad( base_convert($item, 10, $_base), $_maxLength, '0', STR_PAD_LEFT );
        });
    }

    return $range;
}

echo implode(' ', rangeToBase($length));

Параметры:

  • $ _ maxLength для максимальной длины вашего номера.
  • $ _ начните с минимального необходимого вам числа (0 в вашем случае)
  • $ _ для нужного вам преобразованного основания (2 в вашем случае)

Я использую str_pad для отображениянули в вашей строке.Функция возвращает массив строк, которые вы можете вызвать с помощью функции implode ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...