繁体   English   中英

PHP数组:填充一系列重复项

[英]PHP Array: Populate a range of repeats

大图:我需要处理数据以找出最符合条件的数据组合(包括最多4个重复)。

从基本数组(1,2,3)和$ repeat_max = 4变量开始,我想以编程方式创建这样的数组,因为数组值将是动态的。 请原谅任何较小的语法错误,这只是一个一般概念。 请告诉我这是否是最糟糕的主意。 如何遍历$ data并创建$ indiv?

$data = array(1,2,3);

$indiv[0] => array ([0] => array([0] = 1),
                    [1] => array([0] = 1, [1] = 1),
                    [2] => array([0] = 1, [1] = 1, [2] = 1),
                    [3] => array([0] = 1, [1] = 1, [2] = 1, [3] = 1)),
$indiv[1] => array ([0] => array([0] = 2),
                    [1] => array([0] = 2, [1] = 2),
                    [2] => array([0] = 2, [1] = 2, [2] = 2),
                    [3] => array([0] = 2, [1] = 2, [2] = 2, [3] = 2)),
$indiv[2] => array ([0] => array([0] = 3),
                    [1] => array([0] = 3, [1] = 3),
                    [2] => array([0] = 3, [1] = 3, [2] = 3),
                    [3] => array([0] = 3, [1] = 3, [2] = 3, [3] = 3))

array_fill应该可以解决问题:

$indiv = array();
foreach ($data as $val) {
  $tmp = array();
  for ($i = 0; $i < $repeat_max; $i++) $tmp[$i] = array_fill(0, $i + 1, $val);
  $indiv[] = $tmp;
}

$data = [ 1, 2 ]$repeat_max = 3它看起来像这样:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 1
                )

            [1] => Array
                (
                    [0] => 1
                    [1] => 1
                )

            [2] => Array
                (
                    [0] => 1
                    [1] => 1
                    [2] => 1
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => 2
                )

            [1] => Array
                (
                    [0] => 2
                    [1] => 2
                )

            [2] => Array
                (
                    [0] => 2
                    [1] => 2
                    [2] => 2
                )

        )

)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM