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

时间:2019-02-04 05:52:34

标签: 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;
}

以上代码用于查找子集。我从here找到了这段代码。我只添加了array_sum,但显示0如何找到每个子集总数?可以吗?

1 个答案:

答案 0 :(得分:5)

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

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

我喜欢@ splash58的注释,该注释用于在函数外使用以下代码:

$ans = array_map("array_sum", powerSet($array));