An example of the
array is as follows:
[123,345,567,1235,6435,77,33,444,555,666,111,999,19,101,5542]
It is necessary to find all the combinations composed of the elements (three) in this array. The combinations are as follows
123, 345, 567
1235,6435,77
33,444,555
666,111,999
111,999,19
. . .
n Multiple combinations, each combination is non-repeating (this can be the case 123, 345, 567 345, 123, 567, that is, the order is different)
An example of the
array is as follows:
[123,345,567,1235,6435,77,33,444,555,666,111,999,19,101,5542]
It is necessary to find all the combinations composed of the elements (three) in this array. The combinations are as follows
123, 345, 567
1235,6435,77
33,444,555
666,111,999
111,999,19
. . .
n Multiple combinations, each combination is non-repeating (this can be the case 123, 345, 567 345, 123, 567, that is, the order is different)
Example:
<code><?php $data = [123, 345, 567, 1235, 6435, 77, 33, 444, 444, 123, 555, 666, 111, 999, 19, 101, 5542]; // 生成 $items = generate($data); foreach ($items as $item) { echo implode("\t", $item) . PHP_EOL; } function generate($data) { // 排序 sort($data); // 去重 $data = array_unique($data); $data = array_values($data); // 打印原始字符串 echo implode(", ", $data) . PHP_EOL . PHP_EOL; $items = []; for ($i = 0; $i < count($data); $i++) { for ($j = 0; $j < count($data); $j++) { if ($j == $i) { continue; } for ($k = 0; $k < count($data); $k++) { if ($k == $j || $k == $i) { continue; } $items[] = [$data[$i], $data[$j], $data[$k]]; } } } return $items; }</code>
The whole combination is upstairs, I will add a full arrangement
https://3v4l.org/n4ZXT
Reference: Full arrangement and full combination implementation
Please tell me, can anyone help me
<code><?php function getCombinationToString($arr, $m) { if ($m == 1) { return $arr; } $result = []; $tmpArr = $arr; unset($tmpArr[0]); for($i = 0; $i < count($arr); $i++) { $s = $arr[$i]; $ret = getCombinationToString(array_values($tmpArr), ($m - 1), $result); foreach($ret as $row) { $val = $s . ',' . $row; $val = explode(',', $val); sort($val); $val = implode(',', $val); if(! in_array($s, explode(',', $row)) && ! in_array($val, $result)) { $result[] = $val; } } } return $result; } $arr = [123, 345, 567, 1235, 6435, 77, 33, 444, 555, 666, 111, 999, 19, 101, 5542]; $t = getCombinationToString($arr, 3); echo '<pre class="brush:php;toolbar:false">';print_r($t);</code>