大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
问题:有那么一个数组
$arr = array(
array(1, 2, 3),
array('中','国','人'),
array('a','b','c')
);
要求使用PHP语言实现计算该数组的笛卡尔积。
实现过程如下所示:
<?php
$arr = array(
array(1, 2, 3),
array('中','国','人'),
array('a','b','c')
);
function diker($arr) {
$result = array_shift($arr);
while($curArr = array_shift($arr)) {
$lastArr = $result;
$result = array();
foreach($lastArr as $lastVal) {
if(!is_array($lastVal)) {
$lastVal = array($lastVal);
}
foreach($curArr as $curVal) {
if(!is_array($curVal)) {
$curVal = array($curVal);
}
$result[] = array_merge_recursive($lastVal, $curVal);
}
}
}
return $result;
}
$dkRes = diker($arr);
if (is_array($dkRes)) {
foreach ($dkRes as $val) {
print_r($val);
echo "<br/>";
}
} else {
var_dump($dkRes);
}
运行结果如下所示:
Array ( [0] => 1 [1] => 中 [2] => a )
Array ( [0] => 1 [1] => 中 [2] => b )
Array ( [0] => 1 [1] => 中 [2] => c )
Array ( [0] => 1 [1] => 国 [2] => a )
Array ( [0] => 1 [1] => 国 [2] => b )
Array ( [0] => 1 [1] => 国 [2] => c )
Array ( [0] => 1 [1] => 人 [2] => a )
Array ( [0] => 1 [1] => 人 [2] => b )
Array ( [0] => 1 [1] => 人 [2] => c )
Array ( [0] => 2 [1] => 中 [2] => a )
Array ( [0] => 2 [1] => 中 [2] => b )
Array ( [0] => 2 [1] => 中 [2] => c )
Array ( [0] => 2 [1] => 国 [2] => a )
Array ( [0] => 2 [1] => 国 [2] => b )
Array ( [0] => 2 [1] => 国 [2] => c )
Array ( [0] => 2 [1] => 人 [2] => a )
Array ( [0] => 2 [1] => 人 [2] => b )
Array ( [0] => 2 [1] => 人 [2] => c )
Array ( [0] => 3 [1] => 中 [2] => a )
Array ( [0] => 3 [1] => 中 [2] => b )
Array ( [0] => 3 [1] => 中 [2] => c )
Array ( [0] => 3 [1] => 国 [2] => a )
Array ( [0] => 3 [1] => 国 [2] => b )
Array ( [0] => 3 [1] => 国 [2] => c )
Array ( [0] => 3 [1] => 人 [2] => a )
Array ( [0] => 3 [1] => 人 [2] => b )
Array ( [0] => 3 [1] => 人 [2] => c )
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157653.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...