PHP:二进制数的所有可能版本

时间:2018-10-20 16:38:27

标签: php arrays sorting

我已经定义了多维数组$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 :(得分:0)

我觉得类似该函数的通用类将很好地工作:

$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为您的电话号码的最大长度。
  • $ _ start为您想要的最小数量(您的情况为0)
  • $ _ base为您所需的转换后的基数(本例中为2)

我使用str_pad在您的字符串中显示零。该函数返回一个字符串数组,您可以使用implode()进行回显。