在没有foreach的情况下创建多N阵列矩阵?

时间:2015-02-27 06:48:13

标签: php arrays phpunit

PHPunit中的典型@dataProvider方法如下所示:

return [
    [const1,    true],
    [const2,    true],
    [const3,    true],

    [const1,    false],
    [const2,    false],
    [const3,    false],
];

这实际上是[const1,const2,const3]与[true,false]的乘法。当我们没有那么多的值时,可以对其进行硬编码。

但是当我们在每个“轴”中有很多项时,它变得太长了重复值列表。一种可能的解决方案是每个“轴”的一个foreach。但是,如果我们有很多“轴”,那该怎么办?

所以问题是 - 有人知道为这种情况创建多轴多值数组的一些优雅方法吗?

TNX。

1 个答案:

答案 0 :(得分:0)

$array = [['const1','const2','const3'], [true, false]];

$count     = array_map('count', $array);
$finalSize = array_product($count);
$arraySize = count($array);
$output    = array_fill(0, $finalSize, []);
$i = 0;
$c = 0;
for (; $i < $finalSize; $i++) {
    for ($c = 0; $c < $arraySize; $c++) {
        $output[$i][] = $array[$c][$i % $count[$c]];
    }
}