glagola/cross-product-iterator

无限数组的交叉积,无递归

1.0.1 2018-01-16 13:41 UTC

This package is not auto-updated.

Last update: 2024-09-18 02:21:36 UTC


README

至少需要 5.1 版本的 PHP

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

php composer.phar require "glagola/cross-product-iterator" "*"

"glagola/cross-product-iterator" : "*"

将以下内容添加到您应用程序的 composer.json 文件的 require 部分。

示例

代码

<?php

use Glagola\CrossProductIterator;

function aa() {
    yield 'x1';
    yield 'x2';
    yield 'x3';
}

$iterator = new CrossProductIterator([
    aa(),
    new ArrayIterator(['y1']),
    new ArrayIterator(['z1', 'z2', 'z3']),
    new ArrayIterator(['f1', 'f2', 'f3']),
]);

foreach ($iterator as $items) {
    echo "['", implode("', '", $items), "']", PHP_EOL;
}

输出

['x1', 'y1', 'z1', 'f1']
['x1', 'y1', 'z1', 'f2']
['x1', 'y1', 'z1', 'f3']
['x1', 'y1', 'z2', 'f1']
['x1', 'y1', 'z2', 'f2']
['x1', 'y1', 'z2', 'f3']
['x1', 'y1', 'z3', 'f1']
['x1', 'y1', 'z3', 'f2']
['x1', 'y1', 'z3', 'f3']
['x2', 'y1', 'z1', 'f1']
['x2', 'y1', 'z1', 'f2']
['x2', 'y1', 'z1', 'f3']
['x2', 'y1', 'z2', 'f1']
['x2', 'y1', 'z2', 'f2']
['x2', 'y1', 'z2', 'f3']
['x2', 'y1', 'z3', 'f1']
['x2', 'y1', 'z3', 'f2']
['x2', 'y1', 'z3', 'f3']
['x3', 'y1', 'z1', 'f1']
['x3', 'y1', 'z1', 'f2']
['x3', 'y1', 'z1', 'f3']
['x3', 'y1', 'z2', 'f1']
['x3', 'y1', 'z2', 'f2']
['x3', 'y1', 'z2', 'f3']
['x3', 'y1', 'z3', 'f1']
['x3', 'y1', 'z3', 'f2']
['x3', 'y1', 'z3', 'f3']