如何在php中找到每个子集的总和?

and*_*osh 0 php arrays math set subset

我想计算所有可能的子集形式数组的总和。

$array= Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 6 ); //changing

function powerSet($array) {
 // add the empty set
    $results = array(array());
    foreach ($array as $element) {
        foreach ($results as $combination) {
            $results[] = array_merge(array($element), $combination);
            $total= array_sum($results); // I try this
        }
        echo $total; // I try this
    }
    return $results;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码用于查找子集。我从这里找到了这段代码。我只添加array_sum但显示0的方式如何找到每个子集的总和?有什么办法吗?

dWi*_*der 5

$result函数中的in是数组数组,因此您不能仅array_sum在其上使用。为了对每个子集求和,您需要与array_map一起使用array_sum

您可以在函数末尾进行操作-只需添加print_r(array_map("array_sum", $results));为最后一行(如果您希望将其作为输出)即可。

我喜欢@ splash58有关在函数外部使用它的评论:

$ans = array_map("array_sum", powerSet($array));
Run Code Online (Sandbox Code Playgroud)