将一个php mysql数组的一部分一起添加到一起?遗漏同一阵列的其他部分?

时间:2011-09-01 05:22:25

标签: php mysql arrays sum add

如何更改下面的代码,以便将每个部分添加到一起而不是一起刷?如果屏幕上显示的一小部分是123,它应该添加12 + 3并显示15而不是123.我已经尝试了sum_array和其他东西但是它不能用于在其他部分中添加PARTS和其他PARTS。我只能把它显示在一起的结果是如何在下面,或添加错误的部分或整个事情的其他方式。

 $data = mysql_query('SELECT weight FROM my_table WHERE session_id = "' . session_id() . '"'); 
    $params = array();
    while ($row = mysql_fetch_assoc($data)) {     
    $params[] = $row['weight']; 
    }
    $combinations=getCombinations($params);
    function getCombinations($array)
    {
        $length=sizeof($array);
        $combocount=pow(2,$length);
    for ($i=1; $i<$combocount; $i++)
        {
    $binary = str_pad(decbin($i), $length, "0", STR_PAD_LEFT);
            $combination='';
            for($j=0;$j<$length;$j++)
            {
                if($binary[$j]=="1")
                    $combination.=$array[$j];
            }
            $combinationsarray[]=$combination;
     echo $combination . "&lt;br&gt;"; 
        }
        return $combinationsarray;
    } 

2 个答案:

答案 0 :(得分:0)

看起来像是

$combination.=$array[$j];

是你的问题。在PHP中用于字符串连接而不是数学。因为PHP是一种松散的数据类型语言,所以你告诉PHP将$ array [$ j]和“。=”(追加)的字符串值带到$ combination,给出12。= 3 ==“123”的问题,不像你想要的那样。你应该尝试+ =。

答案 1 :(得分:0)

如果我理解您要执行的操作,我认为您希望在以下行中使用添加+而不是连接.

if($binary[$j]=="1")
    $combination += $array[$j];