# PHP实现数组的笛卡尔积运算示例

```\$arr = array(
array(2),
array(6,7),
array('a','b','c')
);
function dikaer(\$arr){
\$arr1 = array();
\$result = array_shift(\$arr);
while(\$arr2 = array_shift(\$arr)){
\$arr1 = \$result;
\$result = array();
foreach(\$arr1 as \$v){
foreach(\$arr2 as \$v2){
if(!is_array(\$v))\$v = array(\$v);
if(!is_array(\$v2))\$v2 = array(\$v2);
\$result[] = array_merge_recursive(\$v,\$v2);
}
}
}
return \$result;
}

```

```Array
(
[0] => Array
(
[0] => 2
[1] => 6
[2] => a
)
[1] => Array
(
[0] => 2
[1] => 6
[2] => b
)
[2] => Array
(
[0] => 2
[1] => 6
[2] => c
)
[3] => Array
(
[0] => 2
[1] => 7
[2] => a
)
[4] => Array
(
[0] => 2
[1] => 7
[2] => b
)
[5] => Array
(
[0] => 2
[1] => 7
[2] => c
)
)

```

```function dikaer(\$arr){
\$arr1 = array();
\$result = array_shift(\$arr);
while(\$arr2 = array_shift(\$arr)){
\$arr1 = \$result;
\$result = array();
foreach(\$arr1 as \$v){
foreach(\$arr2 as \$v2){
\$result[] = \$v.','.\$v2;
}
}
}
return \$result;
}

```

```Array
(
[0] => 2,6,a
[1] => 2,6,b
[2] => 2,6,c
[3] => 2,7,a
[4] => 2,7,b
[5] => 2,7,c
)

```