数组中的多个组合


multiple combinations in an Array

我目前有一个数组,数组中的项目数量可能会改变。我试图为数组中的值找到不同的组合,例如,数组当前具有这些值;

Array ( [0] => 60.0 [1] => 56.8 [2] => 42.08 [3] => 52.16 [4] => 52.8 )

是否可以计算值的数量(在本例中为5),然后执行类似的操作;

60.0+56.8
60.0+56.8+42.08
60.0+56.8+42.08+52.16
60.0+56.8+42.08+52.16+52.8

但也要显示所有组合,如
56.8+42.08
42.08+52.16
etc

我尝试过使用多维数组、数组移位和其他与数组相关的代码。

简单求和,然后弹出最后一个元素。

将产生您预期的输出,只是反向。(如果需要,您可以将结果添加到另一个数组中并使用)

//untestet
while (count($myArray) > 1)){
  $current = 0;
  foreach ($myArray AS $e){
    $current += $e;
  }
  echo "A Result : " . $current;
  //remove last entry
  array_pop($myArray);
}

但是,这将修改您的数组。你也可以做

$myArray = Array(1,2,3);
for ($i=0; $i<count($myArray); $i++){
  $sums_until_index[$i] = 0;
  for ($k=0; $k<=$i; $k++){
    $sums_until_index[$i] += $myArray[$k];  
  }
}
print_r($sums_until_index); //Array ( [0] => 1 [1] => 3 [2] => 6 )

这只是打印等轴的一个示例。如果你想让它计算,修改它。

<?php
$array = Array(10, 20, 30, 40, 50);
for($i = 1; $i < count($array); $i++) {
    $sum = "";
    for($x = 0; $x <= $i; $x++) {
        $sum = $sum . $array[$x] . ($x != $i ? " + " : "");
    }
    echo $sum . "'r'n";
}

工作演示:http://codepad.org/ZgkdW2d5

$sum = array_sum(array_slice($array, 0, rand(1, count($array))));

更新:

下面的代码将接受带有数字的$array,然后显示随机(从第一个开始,没有重复)元素的总和以及等式。

$rand = rand(1, count($array));
$sum = array_sum(array_slice($array, 0, $rand));
$equation = implode(' + ', array_slice($array, 0, $rand));
echo $equation. ' = '. $sum;

操作中:Codepad

此示例回声给定数组的和和和:

$array = array(1,2,3,4);
$total = 0;
$equot = array();
foreach($array as $k=>$a) {     
   $total += $a;
   $equot[] = $a;
   if($k>0) { 
       echo implode("+",$equot)." = $total<br>"; 
   }
}

对于给定的阵列,它会反射:

  • 1+2=3
  • 1+2+3=6
  • 1+2+3+4=10

如果你想得到所有可能的组合,你应该阅读这个现有的线程:

PHP:如何获得1D数组的所有可能组合?