题主的问题应该是 PHP计算二维数组笛卡尔积 吧?如果是的话,请看以下代码:
class Descartes
{
public $sourceArray;
public $resultArray;
public function __construct($array, $result)
{
$this->sourceArray = $array;
$this->resultArray = $result;
}
public function calcDescartes($arrIndex, $arrResult)
{
if ($arrIndex >= count($this->sourceArray)) {
array_push($this->resultArray, $arrResult);
return ;
}
$currentArray = $this->sourceArray[$arrIndex];
$currentArrayCount = count($currentArray);
$arrResultCount = count($arrResult);
for ($i = 0; $i < $currentArrayCount; ++$i) {
$currentArraySlice = array_slice($arrResult, 0, $arrResultCount);
array_push($currentArraySlice, $currentArray[$i]);
$this->calcDescartes($arrIndex + 1, $currentArraySlice);
}
}
}
$example = [
['a', 'b', 'c'],
['c', 'f'],
['g', 'z'],
['x', 'y']
];
$result = [];
$descartes = new Descartes($example, $result);
$descartes->calcDescartes(0, $result);
var_dump($descartes->resultArray);