PHP:如何获得1D阵列的所有可能组合?我已经在SO上阅读/尝试了很多建议的答案,这些答案都没有解决问题$array = array('Alpha', 'Beta', 'Gamma');如何获得所有可能的组合?预期产量:array('Alpha',
'Beta',
'Gamma',
'Alpha Beta',
'Alpha Gamma',
'Beta Alpha',
'Beta Gamma',
'Gamma Alpha',
'Gamma Beta',
'Alpha Beta Gamma',
'Alpha Gamma Beta',
'Beta Alpha Gamma',
'Beta Gamma Alpha',
'Gamma Alpha Beta',
'Gamma Beta Alpha')注意:我正在寻找的答案应包括所有组合和所有不同的安排。例如:'Alpha Beta'和'Beta Alpha'是两个不同的字符串,两者都应该在输出数组中。提前致谢
1 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
我相信你的教授对这个解决方案会更满意:
<?php $array = array('Alpha', 'Beta', 'Gamma', 'Sigma');function depth_picker($arr, $temp_string, &$collect) { if ($temp_string != "") $collect []= $temp_string; for ($i=0; $i<sizeof($arr);$i++) { $arrcopy = $arr; $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element if (sizeof($arrcopy) > 0) { depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect); } else { $collect []= $temp_string. " " . $elem[0]; } } }$collect = array();depth_picker($array, "", $collect);print_r($collect);?>
这解决了它:
Array( [0] => Alpha [1] => Alpha Beta [2] => Alpha Beta Gamma [3] => Alpha Beta Gamma Sigma [4] => Alpha Beta Sigma [5] => Alpha Beta Sigma Gamma [6] => Alpha Gamma [7] => Alpha Gamma Beta [8] => Alpha Gamma Beta Sigma [9] => Alpha Gamma Sigma [10] => Alpha Gamma Sigma Beta [11] => Alpha Sigma [12] => Alpha Sigma Beta [13] => Alpha Sigma Beta Gamma [14] => Alpha Sigma Gamma [15] => Alpha Sigma Gamma Beta [16] => Beta [17] => Beta Alpha [18] => Beta Alpha Gamma [19] => Beta Alpha Gamma Sigma [20] => Beta Alpha Sigma [21] => Beta Alpha Sigma Gamma [22] => Beta Gamma [23] => Beta Gamma Alpha [24] => Beta Gamma Alpha Sigma [25] => Beta Gamma Sigma [26] => Beta Gamma Sigma Alpha [27] => Beta Sigma [28] => Beta Sigma Alpha [29] => Beta Sigma Alpha Gamma [30] => Beta Sigma Gamma [31] => Beta Sigma Gamma Alpha [32] => Gamma [33] => Gamma Alpha [34] => Gamma Alpha Beta [35] => Gamma Alpha Beta Sigma [36] => Gamma Alpha Sigma [37] => Gamma Alpha Sigma Beta [38] => Gamma Beta [39] => Gamma Beta Alpha [40] => Gamma Beta Alpha Sigma [41] => Gamma Beta Sigma [42] => Gamma Beta Sigma Alpha [43] => Gamma Sigma [44] => Gamma Sigma Alpha [45] => Gamma Sigma Alpha Beta [46] => Gamma Sigma Beta [47] => Gamma Sigma Beta Alpha [48] => Sigma [49] => Sigma Alpha [50] => Sigma Alpha Beta [51] => Sigma Alpha Beta Gamma [52] => Sigma Alpha Gamma [53] => Sigma Alpha Gamma Beta [54] => Sigma Beta [55] => Sigma Beta Alpha [56] => Sigma Beta Alpha Gamma [57] => Sigma Beta Gamma [58] => Sigma Beta Gamma Alpha [59] => Sigma Gamma [60] => Sigma Gamma Alpha [61] => Sigma Gamma Alpha Beta [62] => Sigma Gamma Beta [63] => Sigma Gamma Beta Alpha)
- 1 回答
- 0 关注
- 204 浏览
添加回答
举报
0/150
提交
取消