做对于记录集的每一个可能组合


Do ... for every possible combination of recordsets

我需要编写一个php脚本,它可以。。。mysql记录集的每一个可能组合上的东西

示例:
产品"汽车"
选项1:燃油
选项1值:汽油,汽油
选项2:颜色
选项2值:红色、蓝色、绿色
选项3:门
选项3值:3,5

我需要为所有选项/值对之间的每个可能组合做一些代码的东西,比如

组合1:汽油,红色,3
组合2:汽油,红色,5
组合3:汽油,蓝色,3
组合4:汽油,蓝色,5

组合10:汽油、蓝色、5
..
组合100:汽油,绿色,5

当然,期权编号和期权价值编号是动态生成的

我应该如何继续?

您对问题的建议是一个笛卡尔乘积

如果你有一个静态数量的数组,你可以使用@Moo Juice代码,但对于更复杂的逻辑,你必须使用大量的数组,或者即使你不知道会有多少数组,你也可以看看这个问题,第一个答案详细阐述了生成任意数量数组的笛卡尔乘积的算法。

最简单的方法是对每个"选项"进行循环。此代码假定每个选项集的值都已预加载到数组中。

$optionSet1 = array("Gasoline", "Petrol");
$optionSet2 = array("Red", "Blue", "Green");
$optionSet3 = array(3, 5);
foreach($optionSet1 as $o1)
{
   foreach($optionSet2 as $o2)
   {
       foreach($optionSet3 as $o3)
       {
          // Do your thing with $o1, $o2, and $o3
       }
   }
}