【发布时间】:2012-03-05 10:09:53
【问题描述】:
我正在尝试在 PHP 中提出一种算法来获取嵌套数组的所有组合:
Array
(
[0] => Array
(
[0] => Option Object
(
[strValue] => rough
)
[1] => Option Object
(
[strValue] => smooth
)
[2] => Option Object
(
[strValue] => coarse
)
)
[1] => Array
(
[0] => Option Object
(
[strValue] => shiney
)
[1] => Option Object
(
[strValue] => mat
)
)
[2] => Array
(
[0] => Option Object
(
[strValue] => Large
)
[1] => Option Object
(
[strValue] => Medium
)
[2] => Option Object
(
[strValue] => Small
)
[3] => Option Object
(
[strValue] => very large
)
)
)
所以我会得到类似的东西:
-粗糙,闪亮,大
-粗糙,闪亮,小
-粗糙,闪亮,中等
-粗糙,闪亮,非常大
-光滑,闪亮,大
-光滑,闪亮,小
-光滑,闪亮,中等
-光滑,闪亮,非常大
等(在本例中应为 24)
我已经尝试了各种 foreach 示例和一些基本的递归函数,但我似乎没有得到什么快。如果有人能给出如何解决这个问题的基本大纲,我将非常感激,谢谢!
【问题讨论】:
-
您的代码(理想情况下会添加到问题中)究竟是如何失败的?因为乍一看,一组 3 个嵌套的 for 循环应该是解决您的问题所需要的全部。
-
我不会说数组是嵌套的,必然。它们都包含在父数组中,但它们彼此之间没有嵌套。但是要使用它们创建一个cartesian product,你确实需要嵌套循环。
-
好吧,它不一定只需要 3 个 foreach。上面可以有任意数量的额外元素
-
刚刚有机会试用你提到的笛卡尔函数,非常感谢!
标签: php arrays algorithm logic