请问关于排列的笛卡尔积 crossJoin 的使用
这个是关于 crossJoin 的使用。如果是确切知道数组的值,使用肯定是没有问题:
$collection = collect([1, 2]);
$matrix = $collection->crossJoin(['a', 'b'], ['I', 'II']);
$matrix->all();
/*
[
[1, 'a', 'I'],
[1, 'a', 'II'],
[1, 'b', 'I'],
[1, 'b', 'II'],
[2, 'a', 'I'],
[2, 'a', 'II'],
[2, 'b', 'I'],
[2, 'b', 'II'],
]
*/
但是,如果要使用crossJoin的是一个不确切的数据,如:
$collection = collect([1, 2]);
$arr = [
[2, 3],
['a', 1],
['b', 'c']
……
]
// 请问怎么样实现这样的效果?
$matrix = $collection->crossJoin([2, 3], ['a', 1], ['b', 'c'], ……);
$matrix->all();
其实就是怎么把 $arr 做拼接进行 crossJoin 处理。研究了好久都解决不了,请问有遇到过类似问题的吗?
推荐文章: