<?php 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); ?>