我目前有一个数组,数组中的项目数量可以改变。我试图找到数组内部值的不同组合,例如,数组当前具有这些值;
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
等
我尝试过使用多维数组,数组移位和其他与数组相关的代码。
答案 0 :(得分:0)
这个例子回应了给定数组的总和和等值:
$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 :(得分:0)
$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
答案 2 :(得分:0)
这只是打印equotation的一个例子。如果您想要计算,请修改它。
<?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";
}
答案 3 :(得分:0)
简单总结一下,然后弹出最后一个元素。
将产生您的预期输出,只是反转。 (如果需要,您可以将结果添加到另一个数组和度假区)
//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 )