生成字符串
function Cartesian($data){
$len = count($data);
for ($i = 0; $i< $len-1; $i++) {
if ($i === 0) {
// 数组第一个值
$result = $data[0];
}
$temp = [];
// 数组第一个值和第二个值组合
foreach ($result as $res) {
//数组第二个值...$i+1
foreach($data[$i+1] as $sec){
$temp[] = $res . '-' . $sec;
}
$result = $temp;
}
}
return $result;
}
//需要计算的数组
$data = array(
array('白色','银色','玫瑰金'),
array('64G','128G'),
array('移动','电信','联通'),
array('国行','港版')
);
//打印结果
$result = Cartesian($data);
print_r($result);
生成数组格式
function Cartesian($data){
$len = count($data);
// 取第一个集合数组值
$result = $data[0];
for ($i = 0; $i< $len-1; $i++) {
$arr1 = $result;
$result = [];
// 数组第一个值和第二个值组合
foreach ($arr1 as $res) {
//数组第二个值...$i+1
foreach($data[$i+1] as $sec){
if(!is_array($res)) {
$res = array($res);
}
if(!is_array($sec)){
$sec = array($sec);
}
$result[] = array_merge_recursive($res,$sec);
}
}
}
return $result;
}
//需要计算的数组
$data = array(
array('白色','银色','玫瑰金'),
array('64G','128G'),
array('移动','电信','联通'),
array('国行','港版')
);
//打印结果
$result = Cartesian($data);
print_r($result);
评论 (0)