【发布时间】:2016-12-26 23:24:26
【问题描述】:
我有一个包含 10 行的表格,是我用一些 php 代码生成的。从这张表中,我想组装 6 位数字的每一个组合,而不是从每一行重复。 例如:
表格如下:
第 1 行 - 13 18 31 36 42 48
第 2 行 - 07 09 17 27 28 32
第 3 行 - 01 20 27 37 47 49
第 4 行 - 04 20 33 38 39 45
第 5 行 - 13 22 32 37 39 48
第 6 行 - 01 26 29 30 31 43
第 7 行 - 10 24 27 29 40 46
第 8 行 - 01 08 14 36 37 49
第 9 行 - 01 03 10 18 19 46
第10行- 04 12 24 28 38 42
(*i 在单个数字前添加零只是为了便于阅读) 我试图循环遍历而不复制任何行,但每行只提取一个数字 6 位数。 有了这组数字,我的输出将是:
13,07,01,04,13,01
13,07,01,04,13,26
13,07,01,04,13,29
13,07,01,04,13,30
13,07,01,04,13,31
13,07,01,04,13,43
13,07,01,04,13,10
13,07,01,04,13,24
13,07,01,04,13,27
13,07,01,04,13,29
13,07,01,04,13,40
13,07,01,04,13,46
13,07,01,04,13,1
13,07,01,04,13,8
13,07,01,04,13,14...
等等;直到所有第 6 位数字都用完,然后第 5 位将递增到下一个位置,所有第 6 位值将再次组合。并继续向上遍历所有位置值。它不应从同一行组装数字组合,即不会组装 13、18、7、1、4、13,因为 13 和 18 在同一行上。 *但是可以将 13 和 18 放在同一个组合中,因为 18 也在第 9 行。我的意思是,我并不是试图将 13 和 18 排除在一个组合中,因为它们在同一行,但相反,我试图根据表中的位置值进行组合,并且无论该位置值中的数字如何,循环都不会基于同一行位置值创建组合。
查看它的另一种方法是使用我从 db 编译并从中创建表的数组。 我希望组合如下:
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][0], $array [5][0]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][0], $array [5][1]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][0], $array [5][2]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][0], $array [5][3]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][0], $array [5][4]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][0], $array [5][5]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][1], $array [5][0]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][1], $array [5][1]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][1], $array [5][2]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][1], $array [5][3]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][1], $array [5][4]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][1], $array [5][5]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][2], $array [5][0]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][2], $array [5][1]
$array[0][0], $array[1][0], $array[2][0], $array[3][0], $array[4][2], $array [5][2]...
希望到此为止,我已经很好地解释了预期的结果。我尝试过像这样使用 for 循环,但是一旦到达第 6 位值的末尾,我不知道如何迭代下一个级别。
$tr = 0;
$td = 0;
for($i = 0;$i < 6;$i++){
$combo[] = array($makeArray[$tr][$td],$makeArray[$tr+1][$td],$makeArray[$tr+2][$td],$makeArray[$tr+3][$td],$makeArray[$tr+4][$td],$makeArray[$tr+5][$td]);
$tr++
}
我想我可以以某种方式使用 $tr++,或者在循环中嵌套另一个“for”循环或“while”循环来实现这一点。但我无法弄清楚。有什么想法、最佳方法、公关最佳实践吗?
【问题讨论】:
标签: php loops for-loop while-loop