为...记录集的每种可能组合

时间:2013-02-24 20:25:23

标签: php mysql arrays

我需要编写一个php脚本,它可以在mysql记录集的每个可能组合上执行某些操作

例:
产品“汽车”
选项1:燃料
选项1值:汽油,汽油
选项2:颜色
选项2值:红色,蓝色,绿色
选项3:门
选项3值:3,5,

我需要为所有选项/值对之间的每个可能组合执行一些代码,例如

组合1:汽油,红色,3 组合2:汽油,红色,5 组合3:汽油,蓝色,3
组合4:汽油,蓝色,5
...
组合10:汽油,蓝色,5
..
组合100:汽油,绿色,5

当然,选项编号和选项值编号是动态生成的

我该怎么办?

2 个答案:

答案 0 :(得分:1)

您提出的问题是笛卡儿产品

如果您有静态数量的数组,您可以使用@ Moo-Juice代码,但对于更复杂的逻辑,您必须使用大量数组,或者即使您不知道有多少数组将是,您可以查看this问题,其中第一个答案详细说明了生成任意数量数组的笛卡尔积的算法。

答案 1 :(得分:0)

最简单的方法是在每个“选项”的循环中。此代码假定每个选项集的值已预先加载到数组中。

$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
       }
   }
}