【发布时间】:2016-06-15 08:29:31
【问题描述】:
以下数组为我提供了多个“选项”(类型、纯度、型号)。请记住,“选项”可能会在循环的下一次迭代中增加或减少。
$options = array(
'type' => array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3'),
'purity' => array('GOLD', 'SILVER', 'BRONZE'),
'model' => array('Rough', 'Neat', 'mixed', 'Random'),
);
我想要实现的输出是
Old GOLD Rough
Old GOLD Neat
Old GOLD mixed
Old GOLD Random
Old SILVER Rough
Old SILVER Neat
Old SILVER mixed
Old SILVER Random
Old BRONZE Rough
Old BRONZE Neat
Old BRONZE mixed
Old BRONZE Random
Then this whole scenario goes for 'Latest', 'GOLD 1.0', 'GOLD 1.1',
'GOLD 1.2' and 'GOLD 1.3'(each element of first array)
This way it will generate total 72 combinations (6 * 3 * 4)
到目前为止我所取得的成就。
如果我有静态“选项”(类型、纯度、模型),我可以使用嵌套的 foreach,即
$type = array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3');
$purity = array('GOLD', 'SILVER', 'BRONZE');
$model = array('Rough', 'Neat', 'mixed', 'Random');
foreach( $type as $base ){
foreach( $purity as $pure ){
foreach( $model as $mdl ){
echo $base.' '.$pure.' '.$mdl.'<br />';
}
}
}
但我不知道应该使用多少个 foreach 循环,因为“选项”可能会减少或增加。所以我必须动态地遍历数组。任何帮助都感激不尽 谢谢
【问题讨论】:
-
您有 3 个数组,从您的示例中不清楚您如何关联它们。它们都有不同的尺寸。
-
@Muhammed M. 选项和值来自 DB
$options = array( 'type' => array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3'), 'purity' => array('GOLD', 'SILVER', 'BRONZE'), 'model' => array('Rough', 'Neat', 'mixed', 'Random'), );让我们假设在下一次迭代中它可能没有“模型”,或者它可能会在$options数组中添加一些其他数组。所以这个数组的大小可能会增加或减少。我想从$options数组中的数据中实现组合。 -
如果选项增加,您是什么意思?你能举个例子吗?请编辑您的答案,我们将解决您的问题。现在输出是 3 列,如果添加另一个选项输出将是 4 列,对吗?所以基本上,输出中的列数就是选项数组的大小,对吗?输出结果应该是:column1,column2,column3.... column N -> all match with $options[0], $options[1]...$options[N-1] ,正确吗?
-
嗯,好吧,看来你解决了你的问题))
标签: php arrays multidimensional-array foreach nested