要求一个数组的所有子集,可以使用递归的方式来实现。以下是一个示例代码:
function subsets($arr) {
$result = [[]]; // 初始化结果集,包含一个空集
foreach ($arr as $num) {
$count = count($result); // 当前结果集的长度
for ($i = 0; $i < $count; $i++) {
$subset = $result[$i]; // 取出当前的子集
// 将当前元素加入到子集中
$subset[] = $num;
// 将新的子集加入到结果集中
$result[] = $subset;
}
}
return $result;
}
$arr = [1, 2, 3];
$subsets = subsets($arr);
print_r($subsets);
输出结果为:
Array
(
[0] => Array
(
)
[1] => Array
(
[0] => 1
)
[2] => Array
(
[0] => 2
)
[3] => Array
(
[0] => 1
[1] => 2
)
[4] => Array
(
[0] => 3
)
[5] => Array
(
[0] => 1
[1] => 3
)
[6] => Array
(
[0] => 2
[1] => 3
)
[7] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
以上代码通过循环遍历数组中的每个元素,并将其加入到当前已有的子集中,然后将新的子集加入到结果集中。最终得到的结果集即为原数组的所有子集。
下一篇:php求数组值的总和怎么求
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站